mysql - 从称为触发器的插入中检索值

原文 标签 mysql triggers

items表中发生插入后,有两个表items_historyitems,我希望使用以下触发器将条目插入到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;


提前致谢。

最佳答案

如果我对您的理解正确,则触发器应如下所示

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/

相关文章:

mysql - 根据mysql中的唯一日期获取记录

mysql - 配置对MySQL的检查以忽略表名的大小写

php - MySQL中的层次结构数据到PHP多维数组

mysql - 将MySQL数据库从Linux迁移到Mac?

mysql - SELECT FOR UPDATE 与 UPDATE,然后选择

postgresql - 尽管一切似乎都正确,为什么这段代码给了我错误?

mysql - 创建MYSQL触发器语句时错误代码:1064

mysql - MySQL触发器可能会静默失败吗?

ruby-on-rails - 跟踪用户心愿单上产品 Markdown 的方法?

php - 可以应用表的触发器在同一个表中进行跟踪吗?