MySQL没有返回插入行的正确ID

时间:2018-07-23 17:09:39

标签: mysql

我在项目中使用Mysqljs。 Mysqljs libray具有获取插入行的ID的功能。

  

如果要在具有自动递增主键的表中插入行   键,您可以像这样检索插入ID:

     

connection.query('INSERT INTO posts SET?',{title:'test'},函数   (错误,结果,字段){如果(错误)抛出错误;
  console.log(results.insertId); });

但是这里连接的东西是,它没有返回正确的插入ID。

我从脚本(没有仅数据结构)导入了数据库,但是它仍然采用了我猜想的旧插入ID。

我有一个名为item的表 第一次插入时,即使我可以看到我的第一条记录的id字段以1插入表中,它也会返回 insertId为143

我该如何解决?

任何帮助。 预先感谢。

1 个答案:

答案 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将跟踪已删除的记录,并且这并不意味着它也会被重置

确实不会。