这个 check(nvl(column_name in ('x1','x2'), (another_column.value='something_else')) 在 oracle sql 中可能吗?
Is this check(nvl(column_name in ('x1','x2'), (another_column.value='something_else')) possible in oracle sql?
我这里有这行 SQL 代码,但它不起作用。我猜是因为我写错了语法。
constraint ck_ceg check(nvl(ceg in ('%rt','%yrt'),'vezérigazgató'))
此检查必须检查 'ceg' 名称末尾是否有 'rt' 或 'yrt',如果有,则必须将另一列值更改为 'vezérigazgató'。这可以通过检查约束实现吗?
提前致谢!
检查只接受布尔值(这里你传递布尔值或字符串)。
要检查插入/更新的值是否正确,您可以使用:
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;
我这里有这行 SQL 代码,但它不起作用。我猜是因为我写错了语法。
constraint ck_ceg check(nvl(ceg in ('%rt','%yrt'),'vezérigazgató'))
此检查必须检查 'ceg' 名称末尾是否有 'rt' 或 'yrt',如果有,则必须将另一列值更改为 'vezérigazgató'。这可以通过检查约束实现吗?
提前致谢!
检查只接受布尔值(这里你传递布尔值或字符串)。
要检查插入/更新的值是否正确,您可以使用:
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;