Mysql 5.0 LAST_INSERT_ID() 升级到 5.6 后有所不同
Posted
技术标签:
【中文标题】Mysql 5.0 LAST_INSERT_ID() 升级到 5.6 后有所不同【英文标题】:Mysql 5.0 LAST_INSERT_ID() differs after upgrading to 5.6 【发布时间】:2015-04-15 13:28:23 【问题描述】:从 mysql 5.0 迁移到 5.6,我注意到 INSERT_LAST_ID() 函数在触发器内部使用时表现不同。
我的简化情况:
表A有一个(插入后)触发器:插入表_B(ID)值(LAST_INSERT_ID());
表 B 具有外键:CONSTRAINT table_B FOREIGN KEY (ID) REFERENCES Table_A (ID) ON DELETE CASCADE ON UPDATE RESTRICT
此触发器-外键组合在 5.0 下工作正常。迁移到 5.6 后,这些触发器具有其他行为。
现在触发器中使用的函数 LAST_INSERT_ID() 似乎得到 0(零),第二次得到 Primarykey-1。
我已经在网上搜索过,但没有进一步了解。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:没错,5.0 的行为不同于 5.1 或更高版本。该建议将对后触发器应用以下更改:
-- insert into table_B (ID) values(LAST_INSERT_ID());
insert into table_B (ID) values (NEW.ID);
【讨论】:
非常感谢,这就像一个魅力,虽然它有点奇怪 LAST_INSERT_ID 函数的行为不同。 @user3415259:是的,非常奇怪的行为。我打开了一个错误报告Bug #76715。以上是关于Mysql 5.0 LAST_INSERT_ID() 升级到 5.6 后有所不同的主要内容,如果未能解决你的问题,请参考以下文章
Mysql 存储过程返回 LAST_INSERT_ID 为零