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ó')

Check 不能更新值,它只是测试输入的有效性。

如果你想用 'vezérigazgató' 自动更新,如果 ceg 不以 rt 或 yrt 结尾,你必须写一个触发器,像这样:

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 回答