【问题标题】:How to adjust unique identifier when dropping a row删除行时如何调整唯一标识符
【发布时间】:2020-05-24 17:07:36
【问题描述】:

我有一个存储用户的表。我一直在创建新帐户来测试注册和登录功能,但是当我删除一行时,ID 不断增加(设置为自动增加),所以现在我有 ID 1、2 和 9。当它只有几个时,这没什么大不了的,但随着时间的推移,我觉得这可能是一个问题。处理它的最佳方法是什么?我应该寻找空 ID 并强制新用户进入该插槽,还是当用户删除他们的帐户时我应该调整表格?是否有一个简单的内置函数来处理这个问题?我觉得这应该是一个足够普遍的问题,应该有一些解决办法。

【问题讨论】:

  • 这是标准行为。您应该构建您的应用程序,使其永远不会期望自动增量 ID 是连续的,并且您永远不应该重复使用自动增量 ID
  • 一个int类型可以存储20亿+个id。如果那是你担心的事情,你可能不会用完。
  • 另外值得注意的是,一般来说,最好的做法是永远不要删除用户,而是有一个“活跃”列,其中 1 表示活跃,0 表示不活跃。这样我们就不会破坏用户可能与数据库中其他记录的关系
  • @WesleySmith 如果用户配置文件包含个人识别数据,如电子邮件地址、姓名等,这可能会带来挑战。随着监管机构破解隐私问题(GDPR、新 CA 法律),保留您不需要的数据变成负债,而不是资产。即使使用软删除,请确保正确清除它们中的任何识别/伪识别数据。

标签: php sql database auto-increment


【解决方案1】:

如果你真的想这样做(但不这样做),你可以这样做:

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;

它将从您的表中搜索最大 id 并将自动增量设置为此 id

来源Set AUTO_INCREMENT value through variable in MySql

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 2020-04-30
    • 2013-05-21
    • 2018-09-29
    • 2020-05-16
    • 2017-05-06
    • 2015-12-12
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多