有没有ALTER TABLE AUTO_INCREMENT = 1的替代方法?

问题描述

在阅读了这里的讨论(How to reset AUTO_INCREMENT in MySQL?和ViralPatel的帖子(https://www.viralpatel.net/reseting-mysql-autoincrement-column/)以及其他几篇帖子之后,我发现ALTER TABLE tablename AUTO_INCREMENT = 1的问题在于它仍然不会“重新启动”一个ID(它是INT主键)。我自己也尝试过,但是id只是从表中最后一个现有的id开始递增。我想避免必须为数据库明确声明一个ID。特别是,这句话:

请注意,您不能将计数器重置为小于或等于已使用的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前的最大值加1。对于InnoDB,如果该值小于该列中的当前最大值,则不会发生错误,并且当前序列值不会更改。

我想出了这个功能,但是我担心这会是一件坏事,因为它必须在返回新ID之前检索整列ID。

function id_from_one($table,$id_column_name) {
    include 'includes/dbh.inc.PHP'; // This just creates the $conn variable and connects to the database.
    $counter = 1;
    $sql     = "SELECT $id_column FROM $table;";
    $result  = $conn->query($sql);
    if ($result) {
        while ($row = $result->fetch_assoc()) {
            if ($counter == $row[$id_column_name]) { $counter++; }
            else { break; }
        }
    }
    $conn->close();
    return $counter;
}

我理解正确吗?还是实际上有办法做到这一点?为什么MysqL仍要这样做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)