我需要从表中获取下一个id(auto_increment)。
我可以使用SELECT * from table ORDER BY id DESC LIMIT 1;
例如我得到50.但是如果我们从表格中删除两个项目,我将得到48但是正确的一个
将是51.即使我们从表中删除某些内容,如何获得正确的值?
答案 0 :(得分:2)
您只能使用SHOW TABLE STATUS LIKE 'tablename'
来获取auto_increment值。一个更简单的解决方案可能是:SELECT MAX(id) + 1 FROM table
,但如果最后一个条目被删除,这就是错误的。
答案 1 :(得分:1)
show table status like 'table_name'
下一个id值位于“Auto_increment”字段
中答案 2 :(得分:1)
SHOW TABLE STATUS LIKE 'table'
您想要的值位于Auto_increment
字段。
请注意并发性:当您使用此值时,某些其他客户端可能已插入表中,因此您的值已过期。通常最好尝试不需要这个。
答案 3 :(得分:0)
SELECT LAST_INSERT_ID() + 1;
获取自动增量列+ 1
中插入内容的最后一个ID答案 4 :(得分:0)
我看到下一个ID的两个解决方案:
1)选择具有最大功能的列的较大值。示例:从表中选择max(id); 2)使用SHOW STATUS LIKE命令获取正确的数组索引。看看:http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
答案 5 :(得分:0)
在我看来,你在这里创造了竞争条件。
为什么不能插入要插入的行,然后使用LAST_INSERT_ID()来查找它的ID?