【发布时间】:2017-09-24 10:34:40
【问题描述】:
我的表有时间戳列。我想要一个触发器,当更新行且更新语句中未指定时间戳时,将受影响行上的时间戳设置为 0。
如果我使用这个触发器:
CREATE TRIGGER AFTER UPDATE ON mytable FOR EACH ROW
WHEN (NEW.timestamp IS NULL)
BEGIN
UPDATE mytable SET timestamp = 0 WHERE id = NEW.id;
END;
那么触发器不会为此更新语句触发:
UPDATE mytable SET comecolumn='some'
即受影响行的时间戳不会更改为 0。
你能帮我定义触发器吗?
【问题讨论】:
-
如果你的时间戳不是
NULL,你的触发器不会因为WHEN语句而被触发,你希望它什么时候被触发? -
我想为此语句触发:UPDATE mytable SET comecolumn='some'(即,如果更新语句中未提及,则在触发器中将时间戳设置为零)我不想触发此语句 UPDATE mytable SET comecolumn='some', timestamp=12345 (即,如果更新语句已将时间戳设置为某个值,则不要在触发器中将时间戳设置为零)
-
WHEN NEW.timestamp = OLD.timestamp呢? -
恐怕这不会像我描述的那样......
-
实际上
NEW定义了整个新行及其所有内容,因此只有当您在@ 中为timestamp设置不同 值时,NEW.timestamp = OLD.timestamp才会为假987654329@声明
标签: sqlite