我在 SQL Server 2005 中创建了一个检查约束,但是这个检查约束不起作用。SQL Server Management Studio 通过插入语句告诉我以下消息:
消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束“MY_CHECK_CONSTAINT”冲突。冲突发生在数据库“MY_DB”、表“dbo.MY_TABLE”、列“MY_COLUMN”中。
我使用以下代码添加了检查约束:
ALTER TABLE MY_TABLE WITH NOCHECK
ADD CONSTRAINT CK_MY_CHECK_CONSTRAINT CHECK (dbo.MY_FUNCTION(MY_PARAMETER)<1)
调用函数“MY_FUNCTION”返回一个 int。
我的目标是,如果我的函数返回一个小于 1 的 int,则插入语句可以成功完成,如果返回值大于 0,则必须终止插入语句。
我现在的问题是我的函数返回值 0 但插入语句总是终止。我究竟做错了什么?
我的函数代码如下:
CREATE FUNCTION MY_FUNCTION(@MY_PARAMETER uniqueidentifier)
RETURNS int
AS
BEGIN
declare @return int = 0
SET @return = (SELECT COUNT(MY_COLUMN) FROM MY_TABLE WHERE MY_COLUMN= @MY_PARAMETER )
return @return
END
谢谢你的帮助。