[英]UNIQUE inside CHECK constraint
这个问题是检查约束SQL中的IF的新形式。 我想做类似以下检查的事情(抛出ORA-00936: missing expression
异常):
ALTER TABLE t_table
ADD CONSTRAINT chk_unique_active CHECK
(
( tb_active = 0 ) OR
( tb_active = -1 AND UNIQUE(tb_active, tb_img, tb_objid))
);
确保(在DBMS级别上)目标对象是唯一具有相同objid的行是活动的,尽管可以复制非活动的行(这些行的历史视图)。
可以在触发器中完成,但是使用UNIQUE约束中说明的检查似乎比插入问题之前的检查要好。
这可能吗?
使用unique
索引执行此操作:
create unique index unq_table_active
on ( (case when tb_active = -1 then tb_img end),
(case when tb_active = -1 then tb_objid end)
)
Oracle允许在唯一索引中使用NULL
值的多行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.