SQLite3 默认有条件地更新


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。如何让这两个例子都工作?

为什么不BEFORE UPDATE OF val?触发器会将 dt 更新为当前(处理情况 1(,然后UPDATE会将 dt 更新为所需的(处理情况 2(。

最新更新