mysql - 如何在整个删除操作中保持表字段值连续增长?

标签 mysql

我正在处理数据库中的一个表,该表的主键字段为 numeric int 值。

CREATE TABLE 'table' (
    'primary_key_field' INT NOT NULL
    'other_fields' ....
    PRIMARY KEY ( 'primary_key_field' )
)

当我插入一个新元素时,id 值设置为自动递增。

我的问题是,当我删除元素并插入新元素时,id 值的顺序不再连续,而是有漏洞。

例如:如果我删除键字段值为 3 和 6 的元素,则值将为:

1,2,4,5,7,..等等..

有没有办法让元素保持正确的顺序?

例如:这样当我删除字段值为 3 的表元素时,字段值为 4 的元素会自动将其值更新为 3 等等所有其他元素?

在此先感谢您的帮助!

最佳答案

除非您自己编写查询,否则没有主流的 RBDMS 支持它。

  • 自动编号/标识列应该没有任何意义或外部值
  • 外键需要更新
  • 历史表跟踪原始值:在您的示例中删除新的 id 3 存在冲突

如果您需要一个连续的数字来读取,那么您需要 ROW_NUMBER 或 MySQL 等效项。

关于mysql - 如何在整个删除操作中保持表字段值连续增长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7625903/

相关文章:

mysql - 您的 SQL 语法有误 - 使用 Pentaho 数据集成

使用文件排序的 MYSQL 性能变慢

java - 为什么我在控制台 "Unknown column ' worklogent0_.workerEntity' in 'field list' 中出现此错误?

php - 如何在 jQuery Mobile 页面中提交表单?

python - 在 python 中执行多次时出错

MySQL 查询不工作,INNER JOIN 附近的语法错误

mysql - 如何将字符串转换为位集?

mysql - 将日期字段设置为当前今天日期,而不在 mysql 中指定时间

php - codeIgniter 使用 mysql_real_escape_string() 代替。数据库连接问题

mysql - SQL如何获取不包含产品的类别?