删除行时如何调整唯一标识符
How to adjust unique identifier when dropping a row
我有一个存储用户的table。我一直在创建新帐户来测试注册和登录功能,但是当我删除一行时,ID 不断递增(设置为自动递增),所以现在我有 ID 1,2 和 9。只有几个时,这没什么大不了的,但随着时间的推移,我觉得这可能是个问题。处理该问题的最佳方法是什么?我应该寻找空 ID 并强制新用户进入该插槽,还是当用户删除他们的帐户时我应该调整 table?是否有一个简单的内置函数来处理这个问题?我觉得这应该是一个足够普遍的问题,应该有一些解决办法。
如果你真的想这样做(但不这样做),你可以这样做:
SET @max_id = (SELECT MAX(`id`) + 1 FROM `mytable` );
SET @sql = CONCAT('ALTER TABLE `mytable` AUTO_INCREMENT = ', @max_id);
PREPARE stmt FROM @sql;
EXECUTE stmt;
它将从您的 table 中搜索最大 ID 并将自动增量设置为此 ID
来源:
我有一个存储用户的table。我一直在创建新帐户来测试注册和登录功能,但是当我删除一行时,ID 不断递增(设置为自动递增),所以现在我有 ID 1,2 和 9。只有几个时,这没什么大不了的,但随着时间的推移,我觉得这可能是个问题。处理该问题的最佳方法是什么?我应该寻找空 ID 并强制新用户进入该插槽,还是当用户删除他们的帐户时我应该调整 table?是否有一个简单的内置函数来处理这个问题?我觉得这应该是一个足够普遍的问题,应该有一些解决办法。
如果你真的想这样做(但不这样做),你可以这样做:
SET @max_id = (SELECT MAX(`id`) + 1 FROM `mytable` );
SET @sql = CONCAT('ALTER TABLE `mytable` AUTO_INCREMENT = ', @max_id);
PREPARE stmt FROM @sql;
EXECUTE stmt;
它将从您的 table 中搜索最大 ID 并将自动增量设置为此 ID
来源: