我遇到一个奇怪的问题,即自动增量无法正常工作。
我有两张表1和表2。
所有新条目均列入表1。
几天后,一旦表1值过时,它们就会被移到表2中
这样做的代码大致如此处所示(隐藏了一些部分):
$Transaction->Begin();
/*
* 1) Delete items from the original table (Table 1).
*
*/
/*
* 2) Delete rows that we are going to write if they already exist
* in Table 2
*/
/*
* 3) Insert into Table 2
*
*/
$Transaction->Commit();
我的问题是,在归档操作之后,当我尝试在表1中插入新值时,我看到设置为自动增量的主键未按预期工作。新条目与旧值具有相同的密钥。
查看附件中的图片
表1:
如此处所示,在将旧条目归档到表2后,新插入了值127和128(见下图)
表2:
表2已经包含了密钥127和128的值。保证表2中的值总是从表1移到表2,这是它唯一的插入源,这意味着密钥127和128必须是在某些时间点列于表1中。我在这里不知道当我插入新值时,表1中的ID 127和128会再次出现。
表1的模式:
CREATE TABLE `table1` (
`caseid` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`caseid`),
) ENGINE=InnoDB AUTO_INCREMENT=132 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
表2的模式:
CREATE TABLE `table2` (
`caseid` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`caseid`),
) ENGINE=InnoDB AUTO_INCREMENT=129 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;