1
這是常見的,我有一個觸發器更新我的一個表中的date_last_modified字段。我遇到的問題有時需要手動調整date_last_modified字段中的時間戳。但是,當我這樣做時,觸發器會觸發並將其設置回到現在()。SQLite觸發器:只有當某個字段不包含在查詢中時,觸發器纔會採取行動?
這裏是我的觸發器:
CREATE TRIGGER Preference_on_update After UPDATE ON Preference for each row
begin
update Preference set date_last_modified = datetime('now')
where rowid = old.rowid;
end
我想要做的是當更新不已經包括了date_last_modified字段中的值只有這觸發火災。如果更新語句包含date_last_modified,則觸發器不應調整任何內容。
我已經瀏覽了SQLite觸發器的文檔和語法,並且看到有一個「WHEN」子句,但是迄今爲止我的任何咒語都沒有成效。
可以這樣做嗎?
真棒!這看起來是解決這個問題的方法。如果有任何問題,我會給它一個旋轉,並在這裏發出噪音。 – Quangdog
嗯...你的例子似乎總是會在「FOR EACH ROW」行中產生語法錯誤。看起來觸發器語法不喜歡你的不是比較。 但是,在看這裏的語法文檔:https://www.sqlite.org/syntaxdiagrams.html#expr它看起來你的語法應該是有效的。 難住。 – Quangdog
'FOR EACH ROW'必須在'WHEN'之前出現。 –