Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2012:在检查约束中调用用户定义的函数_Sql Server_Sql Server 2012_Check Constraint - Fatal编程技术网

Sql server SQL Server 2012:在检查约束中调用用户定义的函数

Sql server SQL Server 2012:在检查约束中调用用户定义的函数,sql-server,sql-server-2012,check-constraint,Sql Server,Sql Server 2012,Check Constraint,我编写了一个返回int 但是,我不能在检查约束中使用它,此错误是输出的: “myFunction”不是可识别的内置函数名 我也试过了 create table MyTable( attr varchar(100) ); alter table MyTable add constraint CheckAttr CHECK(myFunction(attr)=1); 我看到有人写道,在CHECK constraint中调用用户定义的函数是不可能的,但有人写道这是可能的: 检查约束 如果参数值仅在表或

我编写了一个返回
int
但是,我不能在检查约束中使用它,此错误是输出的:

“myFunction”不是可识别的内置函数名

我也试过了

create table MyTable(
attr varchar(100)
);
alter table MyTable
add constraint CheckAttr
CHECK(myFunction(attr)=1);
我看到有人写道,在CHECK constraint中调用用户定义的函数是不可能的,但有人写道这是可能的:

检查约束 如果参数值仅在表或常量中传递给函数引用列,则可以在检查约束中调用返回标量值的用户定义函数。每次查询处理器检查约束时,查询处理器都会使用与正在检查的当前行关联的参数值调用该函数。表的所有者还必须是由表上的CHECK约束调用的用户定义函数的所有者。
调用标量函数时,需要使用
schema name

create table MyTable(
attr varchar(100) CHECK(schema_name.myFunction(attr)=1)
);

正如不信者Damien_所提到的,在
检查约束
中使用
UDF
存在缺陷,如需更多信息当调用
标量函数时,您需要使用
模式名

create table MyTable(
attr varchar(100) CHECK(schema_name.myFunction(attr)=1)
);

正如Damien_不信者所提到的,在
检查约束中使用
UDF
有缺点,需要更多信息

/facepalm谢谢,现在可以了)我必须再等几分钟才能接受答案)/facepalm谢谢,现在它可以工作了)我必须再等几分钟才能接受答案)您必须使用模式,正如NoDisplayName所示。但是,我也要提醒大家,检查约束和UDF的结合通常是为了实现多行或多表约束,并且在特殊情况下很容易出错-如果您能展示实际功能并解释所需内容,我们可能会有更好的总体建议。嗯,我知道这通常不是一个好主意,但我被要求这样做:该函数检查电子邮件的有效性。您必须使用模式,正如NoDisplayName所示。但是,我也要提醒大家,检查约束和UDF的结合通常是为了实现多行或多表约束,并且在特殊情况下很容易出错-如果您能展示实际功能并解释所需内容,我们可能会有更好的总体建议。嗯,我知道这通常不是一个好主意,但我被要求这样做:该功能检查电子邮件的有效性。