问题描述
在阅读了这里的讨论(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 (将#修改为@)