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

これらの行の問題:

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 に答える
0

OLDトリガー定義でエイリアスを削除します。OLD および NEW エイリアスは、サブジェクト (元のクエリの影響を受けるもの) テーブルを参照します。

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

于 2013-02-16T15:17:41.007 に答える