我在几张表中有几个十进制列,我需要从decimal(9, 4)
扩展到decimal(9, 5)
。不幸的是,每次尝试我都会遇到以下错误。到目前为止,我已尝试使用SQL Server Management Studio中的设计更改它并运行查询:
alter table xxx
alter column xxx decimal (9,5) not null
错误是一样的:
Msg 8115,Level 16,State 8,Line 1 算术溢出错误将数字转换为数据类型数字。
这些是在大量存储过程和应用程序中使用的大型重要表,因此我希望避免添加新列并复制数据。每个表有250K到500K行。
任何想法,将不胜感激。谢谢!
这是因为您在更改数据类型时减少了有效数字的数量。如果您有任何值为100,000或更大的行,则它将不适合新大小。如果要增加小数位数(比例),还需要将精度提高1。
alter table xxx alter COLUMN xxx decimal (10,5) not null
请注意,这会将每行的存储要求增加4个字节。存储要求将从5个字节增加到9个字节。