我有一個觸發器AFTER插入其中,我必須更新剛插入的行的列的值。我顯然不能使用:如何更改AFTER INSERT觸發器中的列值?
SET new.column = value;
我試過做手動更新的觸發器,但它也是不允許的。
有沒有簡單的方法來解決這個問題?
非常感謝!
我有一個觸發器AFTER插入其中,我必須更新剛插入的行的列的值。我顯然不能使用:如何更改AFTER INSERT觸發器中的列值?
SET new.column = value;
我試過做手動更新的觸發器,但它也是不允許的。
有沒有簡單的方法來解決這個問題?
非常感謝!
AFTER觸發器通常用於更新除正在更新的行以外的內容。例如,如果您想記錄已進行更新的事實,AFTER觸發器是理想的。
要更改列插入時的值,您需要使用before觸發器。例如
CREATE TRIGGER modify_column BEFORE INSERT ON mytable SET @column = value;
如果值是一個查詢,預先定義的值或NEW.column
由於INSERT已經通過之後觸發的時候做的,我想你將不得不寫ŧ -SQL根據您的主鍵更改值。
如果您想在插入之前更改它,您可能需要考慮轉而使用BEFORE觸發器。
謝謝!但是我不能在同一個觸發器中執行這兩個操作(即,後一個) – Amadeus45 2009-11-16 07:54:25
@ Amadeus45:這是BEFORE觸發器和AFTER觸發器之間的區別。您只能在寫入數據庫之前更改新行。 – 2009-11-16 08:06:19