0

我编写了一个返回的函数,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 约束调用的用户定义函数的所有者。
4

1 回答 1

4

schema name打电话时需要使用scalar function

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

正如 Damien_The_Unbeliever 所提到的,使用UDFincheck constraint获取更多信息有一些缺点,请查看此处

于 2015-02-03T07:38:15.213 回答