1

テーブルがあると想像してください。

create table MYTABLE (
 id int IDENTITY(1,1)
,name varchar(10)
)

テーブルに多くの行を挿入する必要があります。

生成されたID値が最大整数値(2 ^ 63-1)を超えたときに何が起こるかを誰かが知っていますか?

4

3 に答える 3

5

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.
于 2011-01-24T10:51:51.330 に答える
4

エラーが発生し、挿入が失われます。

メッセージ8115、レベル16、状態1、行2IDENTITYをデータ型intに変換する算術オーバーフローエラー。算術オーバーフローが発生しました。

于 2011-01-24T10:46:07.180 に答える
1

次のような非常に小さな 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
于 2011-01-24T10:51:33.433 に答える