在mysql中,如何在自动增量时获取用于插入操作的主键.
基本上,我希望在语句完成时返回新的自动增量值.
谢谢!
您的澄清评论说,如果发生另一个并发INSERT,您有兴趣确保LAST_INSERT_ID()不会给出错误的结果.请放心,无论其他并发活动如何,使用LAST_INSERT_ID()都是安全的.LAST_INSERT_ID()仅返回当前会话期间生成的最新ID.
你可以自己试试:
打开两个shell窗口,在每个窗口中运行mysql客户端并连接到数据库.
Shell 1:使用AUTO_INCREMENT键插入表中.
Shell 1:SELECT LAST_INSERT_ID(),参见结果.
Shell 2:INSERT到同一个表中.
Shell 2:SELECT LAST_INSERT_ID(),查看与shell 1不同的结果.
Shell 1:再次选择LAST_INSERT_ID(),看到前面结果的重复.
如果你考虑一下,这是唯一有意义的方法.支持自动递增密钥机制的所有数据库都必须采用这种方式.如果结果取决于竞争条件,而其他客户端可能同时进行INSERT,则没有可靠的方法来获取当前会话中的最后一个插入ID值.
MySQL的LAST_INSERT_ID()