1
我正在研究一個Sqlite數據庫,其中一個表格同時具有initial_date
列和due_date
之一。我希望每次改變前者的值時使用觸發器自動設置後者的值,但某些內容不起作用。使用觸發器設置截止日期列
這裏的表DDL
CREATE TABLE timetable (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
initial_date DATETIME,
due_date DATETIME
);
的簡化versione正如你可以看到,這兩個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 ...
變種,但沒有任何運氣。
我確實在這裏做了一些非常愚蠢的事情,但我無法弄清楚什麼。
謝謝你的幫助。
這是正確的,我完全錯過它。一旦修正了這個語法,它就沒有任何問題。此外,'initial_date IS NOT NULL'檢查在'WHEN'和'WHERE'子句中都有效。 –