【发布时间】:2023-03-18 12:56:01
【问题描述】:
我使用 SQL Server,当我创建新表时,我将特定字段设为自动增量 首要的关键。问题是有些人告诉我使该字段成为主键的自动增量意味着在删除任何记录时(他们不关心自动增量字段编号)该字段会在某些时候增加 - 如果我的字段类型是例如整数 - 整数的范围将被完全消耗,我会遇到麻烦。所以他们告诉我不要再使用这个功能了。
最好的解决方案是通过代码获取我的主键的最大值,然后如果该值不存在,则最大值将为 1 其他明智的 max + 1。
对这个问题有什么建议吗?我可以使用自动增量功能吗?
我还想知道不宜使用自动增量的情况......以及替代方案......
注意:: 这个问题一般不针对任何 DBMS,我想知道对于 ORACLE、Mysql、INFORMIX 等 DBMS 是否也是如此。
非常感谢。
【问题讨论】:
-
那么,如果PK号顺序有“洞”,那有什么问题呢?谁在乎?
-
@Serkan - 这是一个幻象问题,请参阅下面的论点了解为什么该问题不存在。
UniqueIdentifier当然不应该以此为动机。它是一个 16 字节的值,占用的空间是int的 4 倍,这在绝大多数情况下是可以接受的,是bigint的两倍,这几乎总是可以接受的,但通常没有必要跨度> -
@Mystere Man - 不,我没有注意到......如果我没有注意到,那么也许其他人也可能不会 - 我完全是在正确的时间在正确的地方开玩笑,但这很容易让人们走上正轨——很多人似乎很容易接受将 GUID 作为身份值的建议......
-
@AdamRalph,我完全同意你的观点,这不是开玩笑的正确地方,而是知识的流动,如果发生这种类型的笑话,最终会侮辱知识。因为整个社区以及新来者都可能被误导。
-
告诉你这件事的人显然是统一的,当涉及到这个或任何其他问题的数据库设计时,你不应该相信他们的判断或能力。
标签: asp.net mysql sql-server database sql-server-2005