mysql - 从调用触发器的插入中检索值

标签 mysql triggers

有两个表itemsitems_history,在items表中发生插入后,我希望将一个条目插入到使用以下触发器的items_history表。

我有点困惑并担心我做得不正确,我正在创建两个变量 NEW.iidNEW.ip 这两个都是值插入到称为触发器的插入件上。我是否正确地获取这两个值并将它们插入到 items_history 表中,或者是否有更好更有效的方法来做到这一点?

items_history 表上的

iiditems 表上 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/

相关文章:

wpf - 为什么 IsMouseOver 被识别而 MouseDown 不是(Wpf 样式触发器)?

json - 在 postgresql 更新触发器上测试数据类型

mysql - SQL触发器: New row :tableA to new col in :tableB

mysql - SQL查找连续的季度

php - 识别 MySQL while 循环中的第 3 行

mysql - Solution Compatible Oracle and MySQL for LIMIT clause

google-apps-script - 如何识别 Google Script 是作为触发器启动还是手动启动?

SQL Server : error could not find type in assembly during dll trigger creation

mysql - 使用选定的数据执行多次插入

mysql - 组合框将依赖于另一个组合框的值