MySQL将AUTO_INCREMENT值设置为MAX(id)+ 1快捷方式?

时间:2016-11-14 12:04:06

标签: mysql

我经常需要"重置"删除部分行后,我的表的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命令可以执行此任务而无需手动执行此操作?

1 个答案:

答案 0 :(得分:0)

要关闭此问题,MySQL中不存在任何快捷方式,建议不要执行此任务。