Last_insert_id 为带有字母和数字的自动递增列返回 0
Posted
技术标签:
【中文标题】Last_insert_id 为带有字母和数字的自动递增列返回 0【英文标题】:Last_insert_id returns 0 for autoincremented column with letters and numbers 【发布时间】:2015-12-29 07:23:11 【问题描述】:我使用触发器生成 id:ug01
、ug02
... 我想将它们插入到外键列中,但 last_insert_id()
返回 0 创建错误。如何获取“last_insert_id”的值,因为它在主键列中。
【问题讨论】:
看看这个答案:***.com/questions/6499389/… 自己生成 id 完全没有意义。此外,last_insert_id()
返回由auto_increment
字段生成的值。您不能使用last_insert_id()
来检索you 生成的一些随机ID。您应该始终使用数字 id。如果出于某种原因需要其他字符,请将它们保存在另一列中,然后在SELECT
-ing 时连接 id 和字母部分。这会让你有你的字母数字 id,mysql 会继续运行,不会有任何由奇怪的主键引起的问题。
【参考方案1】:
如MySQL documentation 中所述,LAST_INSERT_ID() 返回一个 BIGINT (64-bit)
值,该值表示最近执行的 INSERT 语句为 AUTO_INCREMENT
列设置的第一个自动生成的值影响这样的列。
在您的情况下,您正在插入 id,因此不会生成 AUTO_INCREMENT
值,因此 LAST_INSERT_ID
返回 0
。
通过执行 MySql 命令交叉检查:SELECT LAST_INSERT_ID();
【讨论】:
如何获取插入到外键列中的值,因为它在主键列中 或者我可以通过恢复到自动增量来安全吗? 您是否使用 UUID() 生成的值和触发器? 这是 last_insert_id 的引用,dev.mysql.com/doc/refman/5.1/en/…以上是关于Last_insert_id 为带有字母和数字的自动递增列返回 0的主要内容,如果未能解决你的问题,请参考以下文章
Perl 和 MySQL - 使用 DBI 从表的最后一行返回字段,可能带有 last_insert_id?
sms:在三星 Galaxy S7 上带有被解释为数字的字母参数的链接