假设有table如下
create table example{
ID INT(11) AUTO_INCREMENT PRIMARY,
NAME VARCHAR(255),....
}
如何用sql查询得到数据库下一条记录的主键id
错误方式:
select max(ID) from example
当表内没有记录时候,sql得到是null也可以认为是0,但实际上因为主键属性包含AUTO_INCREMENT
,这回导致实际上记录是从上次最大的记录开始。
正确的做法:
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_schema='db name' AND table_name="example";
这样的sql能查询到带自增的主键大小,但是也存在问题,就是一般在开发过程中并不关心库名,但是单纯查询是可行的。
后来我的解决方式:
因为在开发过程中并不关心库名,所以我把AUTO_INCREMENT
属性去掉,然后用select max(ID) from example
查询主键大小,但是在程序内控制主键的自增。
网友评论