それでも返す関数を作成しましたが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 制約によって呼び出されるユーザー定義関数の所有者でもある必要があります。