2009-11-16 106 views
0

我有一個觸發器AFTER插入其中,我必須更新剛插入的行的列的值。我顯然不能使用:如何更改AFTER INSERT觸發器中的列值?

SET new.column = value; 

我試過做手動更新的觸發器,但它也是不允許的。

有沒有簡單的方法來解決這個問題?

非常感謝!

回答

4

AFTER觸發器通常用於更新除正在更新的行以外的內容。例如,如果您想記錄已進行更新的事實,AFTER觸發器是理想的。

要更改列插入時的值,您需要使用before觸發器。例如

CREATE TRIGGER modify_column BEFORE INSERT ON mytable SET @column = value;

如果值是一個查詢,預先定義的值或NEW.column

+0

謝謝!但是我不能在同一個觸發器中執行這兩個操作(即,後一個) – Amadeus45 2009-11-16 07:54:25

+0

@ Amadeus45:這是BEFORE觸發器和AFTER觸發器之間的區別。您只能在寫入數據庫之前更改新行。 – 2009-11-16 08:06:19

1

由於INSERT已經通過之後觸發的時候做的,我想你將不得不寫ŧ -SQL根據您的主鍵更改值。

如果您想在插入之前更改它,您可能需要考慮轉而使用BEFORE觸發器。