SQL 服务器:类型为 IDENTITY(1,1) 的列的最大值方案

SQL Server : Maximum value scenario for columns with type IDENTITY(1,1)

我有一个 table 事务模式定义如下

CREATE TABLE Transactions(
    Trans_ID [int] IDENTITY(1,1),
    Trans_Details varchar(43) 
    )

根据设计,您可以猜到我需要为每一行设置唯一值。但是如果我继续插入行会发生什么?由于我的 Trans_ID 是 Int 类型,它会采用最大 int 范围并再次回落到 0 吗?如果是,我应该如何维护唯一性数量行?

谢谢。

一旦达到最大 INT 值,下一次插入将失败。它不会自动重置为 0 或类似的东西。但是,由于 SQL 服务器中的一个 Int 从 -2147483648 变为 2147483647,你总是可以这样做:

DBCC CHECKIDENT (Transactions.Trans_ID, RESEED, -2147483648);

这至少会给您双倍的标识值,并且如果您已经处于这种情况,则不必删除 table 来更改列的数据类型:)

使用 bigint 例如:

CREATE TABLE Transactions(
    Trans_ID [bigint] IDENTITY(1,1),
    Trans_Details varchar(43) 
    )

这将为您提供 2^63-1 (9,223,372,036,854,775,807) 行可能。