我以前从未写过触发器,我正在关注教程http://net.tutsplus.com/tutorials/databases/introduction-to-mysql-triggers/但我对某些事情感到困惑。
我正在尝试编写一个触发器,该触发器在插入后从表中提取数据并将其记录在历史表中。到目前为止,这是我的代码:
DELIMITER $$
CREATE TRIGGER trackHistory
AFTER INSERT ON test.inventory
FOR EACH ROW BEGIN
***
END;
DELIMITER ;
我需要添加一个 INSERT INTO history... 查询,但我不明白我如何引用“库存”表的正确行上的字段。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 ;