テーブルがあると想像してください。
create table MYTABLE (
id int IDENTITY(1,1)
,name varchar(10)
)
テーブルに多くの行を挿入する必要があります。
生成されたID値が最大整数値(2 ^ 63-1)を超えたときに何が起こるかを誰かが知っていますか?
テーブルがあると想像してください。
create table MYTABLE (
id int IDENTITY(1,1)
,name varchar(10)
)
テーブルに多くの行を挿入する必要があります。
生成されたID値が最大整数値(2 ^ 63-1)を超えたときに何が起こるかを誰かが知っていますか?
例
create table dbo.MYTABLE (
id tinyint IDENTITY(254,1)
,name varchar(10)
)
GO
INSERT dbo.MYTABLE (name) VALUES ('row 254')
GO
INSERT dbo.MYTABLE (name) VALUES ('row 255')
GO
INSERT dbo.MYTABLE (name) VALUES ('broke')
GO
与える
Msg 8115, Level 16, State 1, Line 1
Arithmetic overflow error converting IDENTITY to data type tinyint.
Arithmetic overflow occurred.
エラーが発生し、挿入が失われます。
メッセージ8115、レベル16、状態1、行2IDENTITYをデータ型intに変換する算術オーバーフローエラー。算術オーバーフローが発生しました。
次のような非常に小さな ID 列を使用して、これを簡単にテストできますdecimal(1,0)
。
create table IdentityOverflow (id decimal(1,0) identity)
while 1=1
insert IdentityOverflow default values
Oded が言うように、これは次のように表示されます。
Arithmetic overflow error converting IDENTITY to data type decimal.
これは、最大の整数にも当てはまります。
create table IdentityOverflow (
id decimal(38,0) identity(1,10000000000000000000000000000000000000))
while 1=1
insert IdentityOverflow default values