我经常需要"重置"删除部分行后,我的表的AUTO_INCREMENT值。让我用一个实际的例子来解释:
我有一张名为CLIENT
的表格。我们先说删除一些行,然后将auto_increment设置为11
。然后我删除了4个持续行。 auto_increment仍然设置为11.所以当我再次插入一些客户端时,它会形成一个id。
我总是需要"清洁" auto_increment,例如使用以下功能:
function cleanAutoIncrement($tableName, $columnAutoIncrement, $pdo)
{
$r = false;
try {
$p = $pdo->prepare("SELECT IFNULL(MAX($columnAutoIncrement) + 1, 1) AS 'max' FROM $tableName LIMIT 1;");
$p->execute();
$max = $p->fetch(PDO::FETCH_ASSOC)['max'];
$p = $pdo->prepare("ALTER TABLE $tableName AUTO_INCREMENT = $max;"):
$p->execute();
$r = true;
}
catch(Exception $e) {
$r = false;
}
return $r;
}
该函数的作用是获取表中的最大id,然后将其递增1,并返回其值(如果表中没有行,则返回1)。然后我改变了表格以重置"清洁" id为了不让任何漏洞。
问题
是否有任何MySQL命令可以执行此任务而无需手动执行此操作?
答案 0 :(得分:0)
要关闭此问题,MySQL中不存在任何快捷方式,建议不要执行此任务。