将所有行从一个表移动到另一个表,从原始表中删除但保留auto_increment

时间:2015-09-19 05:07:09

标签: php mysql mysqli

我尝试将所有行从一个表正确移动到另一个表,然后从原始表中删除它们而不重置auto_increment值。

以下似乎重置了auto_increment值...任何想法我做错了什么?

$sql1   = "INSERT INTO archive SELECT * FROM main";
$result1 = mysqli_query($sqlsession, $sql1) or die(mysqli_error());

$sql2   = "truncate main";
$result2 = mysqli_query($sqlsession, $sql2) or die(mysqli_error());

2 个答案:

答案 0 :(得分:3)

DELETE FROM main

而不是截断

答案 1 :(得分:1)

对于速度,数据页面大小的重新分配,我总是指向截断表。尽管必须将auto_inc设置回你想要的特殊情况。所以这是一个像下面这样的两个冲击。

truncate table myTable;
alter table myTable AUTO_INCREMENT = 200001;

Truncate Table手册页。几个stackoverflow帖子已经提到过它。这是one

如果我的行数很少,我会选择delete from myTable。有了巨大的套装,永远不会,并会使用上述。

外键约束因素存在截断或删除成功的可能性。所以考虑一下。