我正在尝试在列中插入数字。列的数据类型为BIGINT,我很确定我的数字没有超过BIGINT的最大值,但仍然得到
Msg 8115, Level 16, State 2, Line 40
Arithmetic overflow error converting expression to data type int.
The statement has been terminated.
我最近的活动是将该列的数据类型从INT更改为BIGINT。我认为我内部的某列仍定义为INT。
这是我的剧本。
Insert into Customer(Cust_ID)
Select 2150000000
列Cust_ID数据类型在设计器中为BIGINT。它也是PRIMARY_KEY,很多表都引用它。
编辑: 这是一些迁移脚本
DROP TABLE dbo.Customer
GO
EXECUTE sp_rename N'dbo.Tmp_Customer', N'Customer', 'OBJECT'
GO
答案 0 :(得分:0)
由于尝试将2150000000
插入Customer.Cust_ID
中,您得到的错误不是。
如果您尝试在bigint
列中插入一个非常大的数字,则错误消息将如下所示:
Arithmetic overflow error converting expression to data type bigint.
The statement has been terminated.
您的错误消息中提到了data type int
,而不是bigint
。
您没有显示完整的脚本。问题出在第40行某处。
答案 1 :(得分:0)
好的,我已经找到答案了。我的表具有自定义约束,这些约束调用需要INT参数的标量函数。
将所有这些函数的参数更改为BIGINT即可解决问题。