2013-02-16 110 views
0

我想用低於觸發mysql的觸發而更新歷史記錄表

CREATE  
    TRIGGER `trig_Update_transaction` AFTER UPDATE ON `transaction` 
    FOR EACH ROW BEGIN  
     UPDATE transaction_history SET OLD.deliverystatus=NEW.deliverystatus 
     WHERE OLD.alertID=NEW.alertID;  
    END$$ 

這裏有什麼問題,更新歷史表不工作?

+0

你無法創建該觸發器或創建的,但它沒有更新? – 2013-02-16 13:31:04

+0

我無法更新表格,觸發器已創建 – Ekky 2013-02-16 13:39:17

+0

我認爲你已經提到'歷史記錄',但你想更新transaction_history表格。希望這不是問題。對? – 2013-02-16 13:41:33

回答

0

問題在這幾行:

UPDATE transaction_history SET OLD.deliverystatus = NEW.deliverystatus 
WHERE OLD.alertID=NEW.alertID; 

從MySQL文檔
在一個UPDATE觸發器,你可以用它OLD.col_name更新和新的前指行的列。 col_name在更新後引用行的列。

以OLD命名的列是隻讀的。你可以引用它(如果你有SELECT權限),但不能修改它。

有關詳細信息,請參閱this

我也願意從社會各界對這個閱讀。

0

刪除觸發器定義中的OLD別名。 OLD和NEW別名引用主題(受原始查詢影響的表)。

UPDATE transaction_history SET deliverystatus=NEW.deliverystatus WHERE alertID=NEW.alertID;

相關問題