我在项目中使用Mysqljs。 Mysqljs libray具有获取插入行的ID的功能。
如果要在具有自动递增主键的表中插入行 键,您可以像这样检索插入ID:
connection.query('INSERT INTO posts SET?',{title:'test'},函数 (错误,结果,字段){如果(错误)抛出错误;
console.log(results.insertId); });
但是这里连接的东西是,它没有返回正确的插入ID。
我从脚本(没有仅数据结构)导入了数据库,但是它仍然采用了我猜想的旧插入ID。
我有一个名为item
的表
第一次插入时,即使我可以看到我的第一条记录的id字段以1插入表中,它也会返回 insertId为143 。
我该如何解决?
任何帮助。 预先感谢。
答案 0 :(得分:0)
您的代码和表中也没有错误,如果您已经编写了元组,然后在该表中将其删除,答案就在这里。
如何将ID自动递增到MySQL数据库中
为确保自动增量列的唯一性,DBMS将列本身的状态存储为“计数器”。
从真实的起点开始:假设我们有一个名为“ people”的表:id作为主键而不是null自动递增,名字和姓氏。
以前从未填充过。
我进行插入,例如:
insert into people(name, surname) values ('Mickey','Mouse')
它将具有“ id”值“ 1”。
让我们假设,在此操作之后,我将插入更多99条不同的记录:第100条记录中的“ id”值将为“ 100”。
然后,让我们删除之前已插入表中的所有100个元组。
现在,如果我再执行一次:
insert into people(name, surname) values ('Mickey','Mouse')
我会看到,新记录的ID值为“ 101”。
简而言之:为了维护自动增量列的完整性,DBMS将跟踪已删除的记录,并且这并不意味着它也会被重置。
确实不会。