2010-07-05 45 views

回答

10

是使用SELECT MAX(ID)FROM表比使用SELECT LAST_INSERT_ID()

肯定不是,从来没有更安全! LAST_INSERT_ID()正是因为您陈述的原因而存在:其他客户可能已经做出其他插入。 LAST_INSERT_ID()始终为您提供当前连接上最后插入的ID。

mySQL Reference

+0

连接池如何影响此? – Yisroel 2010-07-05 15:31:52

+1

同意,但请记住,您必须使用相同的连接,并且不得关闭并重新打开。你应该总是在INSERT命令之后直接运行这个命令,然后再做其他任何事情 - 让它成为一种习惯,然后当你需要这个值时,你已经把它存储在一个变量中了...... :) – 2010-07-05 15:33:56

+0

你是否通过连接到数据库命令行还是使用诸如PHP之类的语言?这可以有所作为... – 2010-07-05 15:34:53

3

使用select max(id)是自找麻烦。两次插入几乎同时发生只是一个时间问题,您会发现数据中出现一些疯狂现象。

+1

由于隔离级别,通常SELECT被赋予更高的优先级 - 所以'SELECT MAX(id)...'可以在插入之前发生。不好,如果我可以选择插入的值,就在插入之前... – 2010-07-05 16:04:52