Russian Qt Forum
Май 09, 2024, 23:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] SQLite - INSERT, UPDATE, транзакции  (Прочитано 3047 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Март 08, 2015, 16:32 »

Здравствуйте.
Вопрос скорее не по Qt, а по SQLite, но так как любители Qt чаще всего используют SQLite, может быть, кто-то знает ответ.

Мое приложение при старте подгружает с сервера длинный список записей, в особом формате. Загруженный список парсится, данные вносятся в таблицу SQLite. Эта таблица необходима для работы приложения, без данных в ней оно бесполезно. Не самое изящное решение, но пока приложение работает именно так.

Ранее таблица SQLite чистилась, и все поля заполнялись по-новой. Вчера я включил транзакции (с целью ускорения), чистку таблицы выключил, а INSERT OR IGNORE поменял на UPDATE OR REPLACE. Сегодня в таблицу было добавлено 3 новых столбца, данных для которых в центральной базе нет, и которые были заполнены другим способом, раз и навсегда. При рестарте приложения команда UPDATE OR REPLACE прекрасно обновляет данные в таблице, но в новые столбцы вносит значения по умолчанию. Если я обновляю значения новых столбцов, приложение работает с ними до следующего перезапуска.

Вопрос: как оформить запрос SQLite, чтобы новые столбцы не теряли своих значений при UPDATE? При этом, если в таблице нет строки с данным ключом, нужно создать новую запись, заполнить данными, а новые столбцы заполнить значениями по умолчанию. Все это необходимо cделать средствами SQL, без дополнительной проверки, существует запись с нужным ключом в таблице, или нет.

PS Вроде решил, двумя запросами:
Сначала INSERT OR IGNORE (добавляющий новые строки), и тут же, с теми же данными, UPDATE (без OR), редактирующий некоторые поля в старых строках.
« Последнее редактирование: Март 08, 2015, 17:58 от PinkPanther » Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 23.