使用SELECT Max(ID)FROM表比使用SELECT last_insert_id()更安全,它们作为2个单独的查询运行?last_insert_id()vs SELECT最大(ID)
我担心,在last_insert_id()可以运行之前,会发生另一个插入。
使用SELECT Max(ID)FROM表比使用SELECT last_insert_id()更安全,它们作为2个单独的查询运行?last_insert_id()vs SELECT最大(ID)
我担心,在last_insert_id()可以运行之前,会发生另一个插入。
是使用SELECT MAX(ID)FROM表比使用SELECT LAST_INSERT_ID()
肯定不是,从来没有更安全! LAST_INSERT_ID()
正是因为您陈述的原因而存在:其他客户可能已经做出其他插入。 LAST_INSERT_ID()
始终为您提供当前连接上最后插入的ID。
使用select max(id)
是自找麻烦。两次插入几乎同时发生只是一个时间问题,您会发现数据中出现一些疯狂现象。
由于隔离级别,通常SELECT被赋予更高的优先级 - 所以'SELECT MAX(id)...'可以在插入之前发生。不好,如果我可以选择插入的值,就在插入之前... – 2010-07-05 16:04:52
连接池如何影响此? – Yisroel 2010-07-05 15:31:52
同意,但请记住,您必须使用相同的连接,并且不得关闭并重新打开。你应该总是在INSERT命令之后直接运行这个命令,然后再做其他任何事情 - 让它成为一种习惯,然后当你需要这个值时,你已经把它存储在一个变量中了...... :) – 2010-07-05 15:33:56
你是否通过连接到数据库命令行还是使用诸如PHP之类的语言?这可以有所作为... – 2010-07-05 15:34:53