以前にトリガーを書いたことがなく、チュートリアル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 ;