我是SQL Server 2012的新手,在练习时我注意到一个我无法纠正的错误。
我创建了一个带有主键的表和另一个具有其引用的表。参考表:
create table emp
(
empno integer not null,
ename varchar(10),
job varchar(9),
mgr varchar(10),
hiredate date,
sal decimal(7,2),
comm decimal(12,3),
deptno integer references dept(deptno)
)
尝试使用
insert into emp values(100,'Sachin','IT','Srikanth','10-10-2009',
50000.00,500.00,1)
但是我收到以下错误。
将数值转换为数据类型数值的算术溢出错误
此外,如果我将COMM的数据类型更改为decimal
,则错误将消失。
在查询中,[decimal(7,2)]
数据类型是问题所在。
(7,2)
告诉您,该数字的总精度可以达到 7 位,其中 2 位保留用于小数部分。
因此,您只有 4 位数字可用于存储值,例如 5000.00 有效 ,以及导致溢出的 500000.00。