在数据库 AutoIncrease 列中。如果值达到最大值怎么办

Posted

技术标签:

【中文标题】在数据库 AutoIncrease 列中。如果值达到最大值怎么办【英文标题】:In database AutoIncrease column. What if value reached maximum value 【发布时间】:2018-12-13 09:37:12 【问题描述】:

我正在开发一个 Access 数据库应用程序。这个应用程序每分钟都有大量的更改(添加的行)。保存在具有“ID”自动增加列(从 0 开始)的表中的所有更改。在某些时候,“ID”值将达到最大值。允许的值(我认为是 Integer.MaxValue 或其他)。在此之后如何添加新行?

注意:添加行时,我还会删除以前的行。因此,表格总行数不会超过 100 行,但“ID”列不会重复其值或重新从 0 开始计数。

【问题讨论】:

即使使用常规的 32 位自动编号列,它也会持续 2^31 / (60*24*365) = 4085 年,每分钟一条记录。 :) 【参考方案1】:

您必须执行identity reseed。这个link 将解释如何在访问数据库中做到这一点。

【讨论】:

非常感谢,有帮助。【参考方案2】:

请改用Large Number (bigint) 和Stop Worrying About Exhausting Bigints。

【讨论】:

这仅对 Access 2016 (Office 365) 有效。这在链接页面上很清楚,但最好将此信息包含在 SO 答案中。该页面也没有提到自动编号字段。我没有 Access 2016,您能否验证此解决方案是否适用于自动编号?

以上是关于在数据库 AutoIncrease 列中。如果值达到最大值怎么办的主要内容,如果未能解决你的问题,请参考以下文章

SQL 从 2 列中选择数据,如果它不为 NULL,则插入到视图中

如果列中的前一个单元格为空,DataReader 不会在 Excel 单元格中看到数据

如果 2 行在 2 列中有数据匹配,则排除数据行

C# 数据表。比较列中的数据,如果匹配,则追加相应行另一列中的数据

如果我的测试数据在列中缺少值,我该如何解决一个热编码?

如果一列中存在数字,则在另一列中查找与该数字相对应的值