Det kan vara möjligt att genomdriva detta genom en kombination av en materialiserad vy (MV) och en begränsning av MV som jag har beskrivit här i min blogg .
Tanken skulle vara att skapa en MV som bara innehöll undantag från regeln, och sedan ha en begränsning som alltid misslyckas när en rad skrivs in i MV. Något så här:
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;