从特定表中获取最后一个插入ID的最佳方法是什么?我看到至少有四种不同的方法:
1. SELECT LAST_INSERT_ID()
2. mysql_insert_id()
3. SELECT max(id) FROM table
4. SELECT id FROM table ORDER BY id DESC LIMIT 1
第一种方法胜过第二种方法,因为如果id具有bigint
类型,则第二种方法返回0。但问题是 - 我不能确定我得到的id
来自我想要的表,因为LAST_INSERT_ID()
返回整个数据库中的最后一个id
。第三种和第四种方法在大型桌子上并不是那么快,但第四种方法似乎在速度方面超过了第三种方法。我想知道的是 - 你们,你们是如何在现实世界的项目中实现这一任务的。
答案 0 :(得分:3)
3和4存在多个问题,例如
1和2接近同一件事。它们都是特定于连接的,因此应该可以很好地处理并发用户,并且具有上下文感知功能,以便您获得预期的结果。
如果你觉得mysql_insert_id对它支持的数据类型有一些缺点,你可以改用第一个。它应该具有相同的行为。