SQL Serverの場合:RID列のタイプによって異なります。内部IDENTITYはインクリメントできますが、stoarge列への割り当てに失敗します。
CREATE TABLE [t1] (
[tid] int IDENTITY (2147483647, 1) NOT NULL
, name varchar(1)
) ON [PRIMARY]
GO
insert into t1(name) values('1')
insert into t1(name) values('1')
これはエラーを引き起こします:
Msg 8115, Level 16, State 1, Line 2
Arithmetic overflow error converting IDENTITY to data type int.
Arithmetic overflow occurred.
ただし、十分なストレージがある数値列は問題なく増加します。
CREATE TABLE [t1] (
[tid] numeric(38,0) IDENTITY (2147483647, 1) NOT NULL
, name varchar(1)
) ON [PRIMARY]
GO
insert into t1(name) values('1')
insert into t1(name) values('1')
同様に、bigintは2 ^^ 63-1でオーバーフローします:
CREATE TABLE [t1] (
[tid] bigint IDENTITY (9223372036854775807, 1) NOT NULL
, name varchar(1)
) ON [PRIMARY]
GO
insert into t1(name) values('1')
insert into t1(name) values('1')
ただし、十分なストレージがある数値列は成功します。
CREATE TABLE [t1] (
[tid] numeric(38,0) IDENTITY (9223372036854775807, 1) NOT NULL
, name varchar(1)
) ON [PRIMARY]
GO
insert into t1(name) values('1')
insert into t1(name) values('1')