Es kann möglich sein, dies durch eine Kombination aus einer materialisierten Ansicht (MV) und einer Einschränkung für die MV zu erzwingen, wie ich hier in meinem Blog .
Die Idee wäre, einen MV zu erstellen, der nur Ausnahmen von der Regel enthält, und dann eine Einschränkung zu haben, die immer fehlschlägt, wenn eine Zeile in den MV eingegeben wird. Etwa so:
create materialized view check_mv
refresh complete on commit as
select 1 dummy
from catalogue c1, catalogue c2
where c1.next_id = c2.previous_id and c1.parent_id != c2.parent_id
alter table check_mv
add constraint check_mv_chk
check (1=0) deferrable;