我写了一个返回int
的函数
不过,我无法在CHECK约束中使用它,输出此错误:
' myFunction的'不是公认的内置函数名称。
create table MyTable(
attr varchar(100) CHECK(myFunction(attr)=1)
);
我也试过
create table MyTable(
attr varchar(100)
);
alter table MyTable
add constraint CheckAttr
CHECK(myFunction(attr)=1);
我看到有人写道,不可能在CHECK约束中调用用户定义的函数,但是here它可以写成:
检查约束 如果参数值仅在表或常量中传递给函数引用列,则可以在CHECK约束中调用返回标量值的用户定义函数。每次查询处理器检查约束时,查询处理器使用与正在检查的当前行相关联的参数值调用该函数。表的所有者还必须是由表上的CHECK约束调用的用户定义函数的所有者。
答案 0 :(得分:4)
当您致电schema name
scalar function
create table MyTable(
attr varchar(100) CHECK(schema_name.myFunction(attr)=1)
);
如Damien_The_Unbeliever所述,在UDF
中使用check constraint
获取更多信息check here