当我使用唯一哈希值作为主键时,我删除了我的记录 ID。这个主键显然不能自增。
现在我的问题是如何检索最后插入的主键? MySQL 在 LAST_INSERT_ID()
上返回 0,但它不是自动增量列。
最佳答案
事实
没有与返回非整数值的 LAST_INSERT_ID()
等效的方法。
一个人可以简单地
- 简单的方法
添加一个整数列,可以自动递增或非自动递增。
要使其正确自动递增,人们至少必须在 MySQL 本身中或使用他们选择的语言实现一种算法,以使用新 ID 填充现有记录。
- 更复杂的方法
https://stackoverflow.com/a/53481729/2323764 (@kellymandem)
添加第二个表来管理 ID,并由没有 ID 的原始表触发。
一个人不能
我发现这个问答非常有希望。
Is there a way to get last inserted id of a NON - auto incremented column in MySQL?
已经提到在 INSERT
语句中使用 LAST_INSERT_ID()
。
但是
INSERT INTO `table` ( `non_integer_column` ) VALUES ( LAST_INSERT_ID( 42 ) );
SELECT LAST_INSERT_ID( );
-> 42
INSERT INTO `table` ( `non_integer_column` ) VALUES ( LAST_INSERT_ID( 'a0b1c2d3e4f5' ) );
SELECT LAST_INSERT_ID( );
-> 0
非整数值将被忽略。
关于MySQL:获取最后插入的主键而不使用自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480701/