【发布时间】:2017-05-03 12:29:19
【问题描述】:
我有一个数据库,它必须在其id 列中维护严格的主键数字序列。即 1、2、3、4、5 等。
现在,当我删除一行时,我需要使用以下方法进行重新计数和增量重置:
SET @count = 0;
UPDATE `Main`
SET `id` = @count:= @count + 1;
ALTER TABLE Main
AUTO_INCREMENT =1;
这在输入 MySQL 命令行时工作正常,这正是我想要的,但是我需要从 PHP 脚本命令执行它。我用:
$sql="SET @count = 0";
$result=$database->query($sql);
$sql="UPDATE Main SET id = @count:= @count + 1";
$result=$database->query($sql);
$sql="ALTER TABLE Main AUTO_INCREMENT =1";
$result=$database->query($sql);
现在前两个重新计数行工作正常,但AUTO_INCREMENT 行不会重置自动递增计数器。同样"ALTER TABLE Main AUTO_INCREMENT =1;" 可以直接从 MySQL 命令行正常工作,但在通过 PHP 脚本执行时不能正常工作。
注意:数据库使用mysqli_query 命令。
【问题讨论】:
-
尝试在同一行中运行它们:
$sql="SET @count = 0; UPDATE `Main` SET `id` = @count:= @count + 1; ALTER TABLE Main AUTO_INCREMENT =1;" -
不,我刚才确实尝试过一次又一次,但它甚至没有重新计算主键。我也试过用逗号和不同的标点符号等替换分号......
-