Oracle
 sql >> Database >  >> RDS >> Oracle

utilizzando trigger per garantire la coerenza dei dati

Potrebbe essere possibile applicarlo combinando una vista materializzata (MV) e un vincolo sull'MV come ho descritto qui nel mio blog .

L'idea sarebbe quella di creare una VM che contenga solo eccezioni alla regola, e quindi avere un vincolo che fallisce sempre quando una riga viene inserita nella MV. Qualcosa del genere:

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;