事务后表中的意外ID偏移量

时间:2016-08-25 05:53:14

标签: php mysql

我基本上在两个不同的函数中完成了一个事务,在我的代码中背靠背调用。代码完全用PHP编写。

insert_into_table1()
{
     // transact start
     // perform delete from table1
     // insert into table from select statement from the database
     // commit if done, else rollback
}

insert_into_table2()
{
     // transact start
     // perform delete from table2
     // insert into table data from table1 after some processing (but same number of rows)
     // commit if done, else rollback
}

以上是伪代码的示例。 最初,表格为空。 代码运行后出现问题。两个表都插入了N行。

再次运行代码时,使用delete命令(MySQL)清空表。并且N个行再次插入到两个表中。

但是在第二次(或更多次)运行之后,'id'(我在auto_increment上有这两个表的偏移量为1。我已经确认该值没有改变)table1的字段继续N + 1,但是第二个表的偏移量为10,而N + 1也应该继续。

我想知道为什么会出现这种情况以及如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

插入时,自动增量值会增加。删除时,它不会回滚。

表格的TRUNCATE也会重置,但您仍会丢失表格中的所有数据。

在你的情况下很好,因为它们一开始是空的......但是你能保证这一点吗?