MySQL 触发器更新最后插入的行
Posted
技术标签:
【中文标题】MySQL 触发器更新最后插入的行【英文标题】:MySQL trigger update last inserted row 【发布时间】:2013-07-04 10:37:52 【问题描述】:我有这张表(SystemEvents):
id ipv4 ipnumber
1 1.2.3.4
2 3.4.5.6
我需要一个 AFTER INSERT 触发器来更新此表的最后一行。
类似下面的东西
UPDATE SystemEvents
SET ipnumber=INET_ATON(NEW.ipv4)
WHERE id=NEW.id
这是正确的吗?
虽然语法看起来不错,但我无法让它工作!
任何帮助将不胜感激。
谢谢!
【问题讨论】:
能否请您显示 AFTER INSERT 触发器。 【参考方案1】:使用BEFORE INSERT
有效
delimiter |
CREATE TRIGGER `some_name` BEFORE INSERT ON SystemEvents
FOR EACH ROW BEGIN
SET NEW.ipnumber = INET_ATON(NEW.ipv4);
END
|
delimiter ;
SQLFiddle demo
【讨论】:
我得到了这个:错误 1362:触发器后不允许更新新行 也不工作。一切都卡住了,没有插入新行 是的!使用插入前触发器而不是插入后是关键。谢谢!【参考方案2】:试试这个:
UPDATE SystemEvents
SET ipnumber=INET_ATON(NEW.ipv4)
WHERE id=(SELECT MAX(id) FROM SystemEvents WHERE id < NEW.id);
【讨论】:
以上是关于MySQL 触发器更新最后插入的行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 触发器中复制插入、更新、删除的行