我正在学习如何添加check约束,但它并没有像我预期的那样工作。
因此,我有一个列限制,这实际上需要一些约束,因为一些用户在进入记录后端时破坏了我们的系统。
列‘限制’:约束期望:如果不为空或空,那么记录必须是浮点数/数值。

有人能帮忙解决这个问题吗?
提前感谢!
发布于 2018-08-13 03:42:57
您可以使用触发器使用ISNUMERIC()检查数字,如果不是,则抛出错误。但这是错误的设计,因为您没有使用数据库约束,而是触发验证。
我仍然建议您添加一个新的核对表列,如果CK_limit是否为空,用户可以自行选择。
发布于 2018-08-13 04:00:39
我想这就是你要找的属性。或者您可以使用客户端验证,也可以使用存储过程来跟踪这一点。
发布于 2018-08-13 11:09:43
不要对约束使用isnumeric()。例如,isnumeric()接受以下有效数字:
'$''.''-''3e4'相反,使用try_convert()。你可以:
(try_convert(float, limit) is not null or
limit is null or
limit = ''
)但是,正确的解决方案是简单地为列使用正确的数据类型。不要将数值存储在字符串中。
https://stackoverflow.com/questions/51814772
复制相似问题