0

我想使用下面的触发器更新历史表

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$$

这里有什么问题?

4

2 回答 2

0

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

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

于 2013-02-16T15:17:41.007 回答
0

这些行中的问题:

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

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

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

有关详细信息,请参阅

我也很想从社区中阅读有关此内容的信息。

于 2013-02-16T14:39:37.360 回答