我正在开发一个 Sqlite 数据库,其中一个表同时具有一initial_date
列和一列due_date
。每次更改前者的值时,我想使用触发器自动设置后者的值,但有些东西不起作用。
这是表 DDL 的简化版本
CREATE TABLE timetable (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
initial_date DATETIME,
due_date DATETIME
);
如您所见,两DATETIME
列允许NULL
值;这是因为在实际表中我想插入行而不设置 ,initial_date
并稍后更新这些行以设置initial_date
.
这是我添加的触发器
CREATE TRIGGER [timetable-due-date] AFTER UPDATE ON timetable
BEGIN
UPDATE timetable
SET due_date = DATE( NEW.initial_date, '+ 10 days' )
WHERE id = NEW.id
AND NEW.initial_date IS NOT NULL;
END;
但它不会触发。如果我执行UPDATE timetable SET initial_date='2013-10-04' WHERE id=1
,due_date
保持初始NULL
值。
我也尝试使用该CREATE TRIGGER ... AFTER UPDATE OF initial_date ON ...
变体,但没有任何运气。
我肯定在这里做了一些非常愚蠢的事情,但我不知道是什么。
感谢您的帮助。