Het kan mogelijk zijn om dit af te dwingen door een combinatie van een materialized view (MV) en een beperking op de MV zoals ik heb beschreven hier in mijn blog .
Het idee zou zijn om een MV te maken die alleen uitzonderingen op de regel bevat, en dan een beperking te hebben die altijd mislukt wanneer een rij in de MV wordt ingevoerd. Zoiets als dit:
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;