有两个表items
和items_history
,在items
表中插入后我想要使用下面的items_history
表插入一个表触发。
我有点困惑并且担心我没有正确地执行它,我正在创建两个变量NEW.iid
和NEW.ip
这些都是插入到调用触发器的插入上的值。我是否正确地获取这两个值并将它们插入到items_history
表中,还是有更好的方法来实现它?
iid
表上的 items_history
是id
表上的items
的外键。
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;
提前致谢。
答案 0 :(得分:1)
如果我理解正确你的触发器应该是这样的
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 演示