有两个表items
和items_history
,在items
表中发生插入后,我希望将一个条目插入到使用以下触发器的items_history
表。
我有点困惑并担心我做得不正确,我正在创建两个变量 NEW.iid
和 NEW.ip
这两个都是值插入到称为触发器的插入件上。我是否正确地获取这两个值并将它们插入到 items_history
表中,或者是否有更好更有效的方法来做到这一点?
items_history
表上的 iid
是 items
表上 id
的外键。
DROP TRIGGER IF EXISTS `item_created_trg`;
CREATE TRIGGER `item_created_trg`
AFTER INSERT ON `items` FOR EACH ROW
BEGIN
SET NEW.iid = (SELECT MAX(id) FROM `items` LIMIT 1);
SET NEW.ip = (SELECT created_ip FROM `items` i WHERE i.id=NEW.iid LIMIT 1);
INSERT INTO `items_history` (iid, title, description, created, created_by, created_ip) VALUES (NEW.iid, 'Added to database.', '', NOW(), 1, NEW.ip);
END;
提前致谢。
最佳答案
如果我理解正确的话,你的触发器应该是这样的
CREATE TRIGGER item_created_trg
AFTER INSERT ON items
FOR EACH ROW
INSERT INTO items_history (iid, title, description, created, created_by, created_ip)
VALUES (NEW.id, 'Added to database.', '', NOW(), 1, NEW.created_ip);
这里是SQLFiddle 演示
关于mysql - 从调用触发器的插入中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18588250/