sqlite3 по умолчанию при обновлении условно - PullRequest
0 голосов
/ 13 февраля 2020
CREATE TABLE t (
    id INTEGER PRIMARY KEY,
    val INTEGER,
    dt INTEGER NOT NULL DEFAULT (strftime('%s','now'))
)

CREATE TRIGGER tr AFTER UPDATE OF val
ON t
BEGIN
  UPDATE t SET dt=strftime('%s','now') WHERE id=NEW.id;
END;

INSERT INTO t (1, 11)

Теперь, когда я делаю

UPDATE t SET val=2 WHERE id=1

Все работает нормально, но когда я хочу указать dt:

UPDATE t SET val=2, dt=140000 WHERE id=1

Триггер перезаписывает мой новый DT. Как заставить оба из этих двух примеров работать?

1 Ответ

0 голосов
/ 14 февраля 2020

Почему бы не BEFORE UPDATE OF val? Триггер обновит dt до текущего (заботится о случае 1), затем UPDATE обновит dt до желаемого (заботится о случае 2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...