使用“之前”触发器插入后的 MySQL PDO LastInsertID 返回错误值
Posted
技术标签:
【中文标题】使用“之前”触发器插入后的 MySQL PDO LastInsertID 返回错误值【英文标题】:MySQL PDO LastInsertID after insert with "before" trigger returns wrong value 【发布时间】:2012-01-06 23:29:39 【问题描述】:我有一个包含 ID (auto_inc)、名称、... 和 customer_code 字段的客户表。该表还有一个“before”触发器,从另一个表中选择一个客户代码,并在向该表中插入新记录之前设置customer_code字段。完美运行。
问题是当我检索 lastInsertID() 它总是返回 1 !
我正在使用 PDO 和 php。
感谢您的帮助!
【问题讨论】:
你的表有自动递增的主键吗? 如果你删除触发器那么一切正常?! 是的...我的项目确实工作了几个月没有任何问题,直到我必须使用“之前”触发器包含客户代码字段。 【参考方案1】:您使用的是什么版本的 mysql?从 5.0.12 开始,最后一个插入 ID 不应被触发器覆盖。但在该版本之前,触发器可能会更改值,并且后续查询会看到错误的值。
见http://dev.mysql.com/doc/refman/5.0/en/stored-routines-last-insert-id.html
【讨论】:
以上是关于使用“之前”触发器插入后的 MySQL PDO LastInsertID 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章