1

以前にトリガーを書いたことがなく、チュートリアルhttp://net.tutsplus.com/tutorials/databases/introduction-to-mysql-triggers/に従っていますが、何かについて混乱しています。

INSERT 後にテーブルからデータを取得し、履歴テーブルに記録するトリガーを作成しようとしています。これまでの私のコードは次のとおりです。

DELIMITER $$

CREATE TRIGGER trackHistory
AFTER INSERT ON test.inventory
FOR EACH ROW BEGIN
***
END;

DELIMITER ;

INSERT INTO history... クエリを追加する必要がありますが、'inventory' テーブルの正しい行のフィールドを参照する方法がわかりません。答えはUPDATEまたはDELETEと同じですか?

編集:以下の回答のアドバイスに従おうとしましたが、うまくいきませんでした。このエラーが発生しました

1363 - INSERT トリガーに OLD 行がありません。どうしたの?

DELIMITER $$

CREATE TRIGGER trackInsertHistory
AFTER INSERT ON inventory
FOR EACH ROW BEGIN
    INSERT INTO history
    VALUES (NEW.ID, OLD.Quantity, NEW.Quantity, TIMESTAMP);
END$$

CREATE TRIGGER trackStockHistory
AFTER UPDATE ON inventory
FOR EACH ROW BEGIN
    INSERT INTO history
    VALUES (NEW.ID, OLD.Quantity, NEW.Quantity, TIMESTAMP);
END$$

DELIMITER ;
4

2 に答える 2

2

それらは NEW および OLD として参照されます。

NEW は、挿入される新しいレコードまたは更新されたデータです。

OLD は、削除されたレコード、または更新前の古いデータです。

于 2013-08-12T18:50:45.927 に答える