小数点四舍五入时引发错误



我在@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时,表达式中发生精度损失后会生成错误。[…]当试图将具有固定精度的值存储在具有较低精度的列或变量中时,会发生精度损失

相关内容

  • 没有找到相关文章

最新更新