从调用触发器的Insert中检索值

时间:2013-09-03 09:08:17

标签: mysql triggers

有两个表itemsitems_history,在items表中插入后我想要使用下面的items_history表插入一个表触发。

我有点困惑并且担心我没有正确地执行它,我正在创建两个变量NEW.iidNEW.ip这些都是插入到调用触发器的插入上的值。我是否正确地获取这两个值并将它们插入到items_history表中,还是有更好的方法来实现它?

iid表上的

items_historyid表上的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;

提前致谢。

1 个答案:

答案 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 演示