我使用 SQL Server,当我创建一个新表时,我将特定字段设置为自动递增 首要的关键。问题是有人告诉我让字段为主键自动递增意味着删除任何记录时(他们不关心自动递增字段编号)字段在某个时候增加 - 如果我的字段类型是例如整数 - 整数范围将被完全消耗,我会遇到麻烦。所以他们告诉我不要再使用此功能。
最好的解决方案是通过代码获取我的主键的最大值然后如果该值不存在则最大值将为 1
否则 max + 1
.
关于这个问题有什么建议吗?我可以使用自动递增功能吗?
我还想知道哪些情况不适合使用自动增量......以及替代方案......
注意::这个问题是一般性的,并不特定于任何 DBMS,我想知道对于像 ORACLE、Mysql、INFORMIX 等 DBMS 也是如此
非常感谢。
最佳答案
您应该使用标识(自动递增)列。 bigint数据类型可以存储值 最多 2^63-1 (9,223,372,036,854,775,807)。我认为您的系统不会很快达到这个值,即使您正在插入和删除大量记录。
如果您正确地实现了您建议的方法,您最终会遇到很多锁定问题。否则,您将不得不处理因违反约束(或者更糟 - 非唯一值,如果没有主键约束)而引发的异常。
关于asp.net - 数据库中的自动增量功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075624/