1

ここにこの SQL コード行がありますが、これは機能しません。間違った構文を書いているためだと思います。

constraint ck_ceg check(nvl(ceg in ('%rt','%yrt'),'vezérigazgató'))

このチェックでは、「ceg」の名前の末尾に「rt」または「yrt」があるかどうかを確認する必要があります。含まれている場合は、別の列の値を「vezérigazgató」に変更する必要があります。これはチェック制約によって可能ですか?

前もって感謝します!

4

1 に答える 1

2

ブール値のみを受け入れるようにチェックします(ここではブール値または文字列を渡します)。

挿入/更新された値が正しいことを確認するには、次を使用できます。

constraint ck_ceg check(ceg like '%rt' or ceg like '%yrt' or pozicio = 'vezérigazgató')

チェックは値を更新できません。入力の有効性をテストするだけです。

ceg が rt または yrt で終わらない場合に「vezérigazgató」で自動的に更新する場合は、次のようにトリガーを作成する必要があります。

create or replace trigger yourtable
before insert or update on yourtable
for each row
begin
    if :new.ceg not like '%rt' or :new.ceg not like '%yrt' then
        :new.pozicio := 'vezérigazgató';
    end if;
end;
于 2016-05-11T19:38:44.920 に答える