Mysql触发器在更新历史记录表时不起作用

时间:2013-02-16 12:46:55

标签: php mysql triggers

我想使用以下触发器

更新历史记录
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$$

这里有什么问题?

2 个答案:

答案 0 :(得分:0)

这些问题:

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

来自MySQL文档
 在UPDATE触发器中,您可以使用OLD.col_name在更新行之前引用行的列,使用NEW.col_name在更新行之后引用该行的列。

以OLD命名的列是只读的。您可以引用它(如果您具有SELECT权限),但不能修改它。

有关详细信息,请参阅this

我也很想从社区中读到这个。

答案 1 :(得分:0)

删除触发器定义中的OLD别名。 OLD和NEW别名是指主题(一个受原始查询影响)表。

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