我在@MyTable
表中有[BRKTFRT1] [decimal](7, 4
)列。
当我尝试插入值34.1234555
时,它成功地将34.1235
插入到列中。事实上,我需要防止这种四舍五入,如果有必要的话,我会提出一个错误。我们如何才能添加这样的约束?
注意:一个想法是检查输入字符串的长度。但我想将其添加为CHECK约束,这样开发人员就不会错过这个约束。
注意:我使用的是SQL Server 2012
注意:我并不是想"避免"四舍五入。我需要通知调用程序他们提供了不正确的值(通过引发错误)。
DECLARE @MyTable TABLE (BRKTFRT1 [decimal](7, 4) )
DECLARE @MyStringDecimal VARCHAR(20)
SET @MyStringDecimal = '34.1234555'
INSERT INTO @MyTable (BRKTFRT1) VALUES (@MyStringDecimal)
SELECT BRKTFRT1 FROM @MyTable
查看SET NUMERIC_ROUNDABORT
当SET NUMERIC_ROUNDABORT为ON时,表达式中发生精度损失后会生成错误。[…]当试图将具有固定精度的值存储在具有较低精度的列或变量中时,会发生精度损失