我想编写一个函数,该函数返回它插入的行的列值(在本例中为自动递增的主键)。
基本上,我想插入一些新数据,生成一个新的主键,然后获取该键。我可以简单地查找表中最高的主键,但是其他人也可能正在运行该函数,我可以返回错误的键,对吗?
谈判这个问题最简单的方法是什么?
答案 0 :(得分:2)
正如评论中所指出的,来自MySQL documentation:
mysql> SELECT LAST_INSERT_ID();
-> 195
此LAST_INSERT_ID()
函数不受SELECT MAX(id)
之类的竞争条件的影响,因为它在MySQL内维护,特定于您的连接。它返回为您的最后一次插入而生成的ID,而不是 anybody的最后一次插入。