我编写了一个返回的函数,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 约束中调用用户定义的函数,但这里写的是它是可能的:
CHECK 约束 如果参数值仅在表或常量中传递给函数引用列,则可以在 CHECK 约束中调用返回标量值的用户定义函数。每次查询处理器检查约束时,查询处理器都会使用与正在检查的当前行关联的参数值调用该函数。表的所有者还必须是由表上的 CHECK 约束调用的用户定义函数的所有者。