假設我們有一個表:SQL Server 2008:如果身份超過int的最大值會發生什麼?
create table MYTABLE (
id int IDENTITY(1,1)
,name varchar(10)
)
我們必須插入很多行到表中。
有沒有人知道當生成的標識值超過最大整數值(2^63-1)時會發生什麼?
假設我們有一個表:SQL Server 2008:如果身份超過int的最大值會發生什麼?
create table MYTABLE (
id int IDENTITY(1,1)
,name varchar(10)
)
我們必須插入很多行到表中。
有沒有人知道當生成的標識值超過最大整數值(2^63-1)時會發生什麼?
將發生錯誤,插入將會丟失。
Msg 8115,Level 16,State 1,Line 2 將IDENTITY轉換爲數據類型int的算術溢出錯誤。 發生算術溢出。
你可以很容易地用一個非常小的標識列測試,像decimal(1,0)
:
create table IdentityOverflow (id decimal(1,0) identity)
while 1=1
insert IdentityOverflow default values
像奧德說,這個打印:
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
考試PLE
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.
能否請您提供一個鏈接到一個文檔。 – Tim 2011-01-24 10:49:33