powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Возможно ли разрулить такое запросом?
3 сообщений из 3, страница 1 из 1
Возможно ли разрулить такое запросом?
    #40000383
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица уникальных значений. К этим значениям привязаны другие значения, которые периодически меняются.
Хочу сделать что-то вроде истории - т.е. отдельную таблицу, в которой можно выбрать старые значения по дате.

Но для sqlite нагуглил только insert or ignore , что не подходит. Либо ON CONFLICT DO UPDATE SET , что тоже не подходит и ИМХО аналогично on duplicate key update в других бд.

Мне бы что-то вроде ON CONFLICT DO INSERT INTO Но примеров не нашел, а собственные попытки выдают ошибку.
Есть что-то подобное в sqlite или через программу данные таскать и сверять?
...
Рейтинг: 0 / 0
Возможно ли разрулить такое запросом?
    #40000566
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это делается через специальное волшебство под названием TRIGGER.

https://www.sqlite.org/lang_createtrigger.html

Создаешь триггер на основной таблице, он будет вызываться автоматически когда ты меняешь эту основную таблицу. А внутри уже делаешь копию изменений в таблицу истории.

Что-то в духе
Код: sql
1.
2.
3.
4.
create trigger SaveHistory before update on BaseTable
begin
    insert into HistoryTable set timestamp=date('now'), oldvalue=OLD.value, newvalue=NEW.value;
end;



Псевдо таблицы OLD и NEW создаются и уничтожаются автоматически и существуют на время работы триггера. Содержат соответственно старые и новые знания всех изменяемых строк.
...
Рейтинг: 0 / 0
Возможно ли разрулить такое запросом?
    #40001844
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,
Да, триггер, а так же заведите (и в любой таблице, во всех) поле, в которое будет инсертится по умолчанию CURRENT_TIMESTAMP.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Возможно ли разрулить такое запросом?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]