【发布时间】:2023-03-21 22:29:01
【问题描述】:
这个问题是An IF inside a check constraint SQL 的新变化。我想做类似于以下检查的事情(引发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 的行处于活动状态,尽管可以复制不活动的行(行的历史视图)。
它可以在触发器中完成,但使用 check 似乎更好,如UNIQUE constraint vs checking before INSERT 问题中所述。
这可能吗?
【问题讨论】:
标签: sql oracle check-constraints