【问题标题】:MySQL trigger update last inserted rowMySQL 触发器更新最后插入的行
【发布时间】: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 触发器

标签: mysql triggers row


【解决方案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);

【讨论】:

    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2014-09-23
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多