Этот вопрос является новым поворотом IF в проверочном ограничении 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))
);
Цель - убедиться (на уровне СУБД), что активна только одна строка с тем же объектом.хотя неактивные строки могут дублироваться (историческое представление строк).
Это может быть сделано в триггере, но, кажется, лучше использовать check , как объяснено в UNIQUEограничение против проверки перед INSERT вопрос.
возможно ли это?