我想编写一个函数,为插入的行返回一列的值(在这种情况下为自动递增的主键)。
本质上,我想插入一些新数据,生成一个新的主键,然后获取该键。我可以简单地在表中查找最高的主键,但是有可能其他人也可以运行该函数,并且我可以返回错误的键,对吗?
解决这个问题的最简单方法是什么?
正如评论中指出的那样,来自MySQL文档:
mysql> SELECT LAST_INSERT_ID(); -> 195
该LAST_INSERT_ID()函数不受竞争条件的影响SELECT MAX(id),因为它在特定于您的连接的MySQL中维护。它返回为 您的 最后一次插入生成的ID ,而不是 任何人的 最后一次插入生成的ID 。
LAST_INSERT_ID()
SELECT MAX(id)