Není snadné to udělat tak, aby to bylo zdravé a správné, i když aktualizace provádí více relací. Pokud to zkusíte se spouštěči, dostanete se do nepořádku a deklarativní omezení Oracle nejsou dostatečně silná, aby to vyjádřila.
Lze to provést následovně:-
- Vytvořte protokol materializovaného zobrazení v nadřazené i podřízené tabulce
- Vytvořte zobrazení materializovaného spojení, které je spojí a spočítá počet dětí seskupených podle rodiče. Toto musí být RYCHLÉ OBNOVENÍ PŘI ZVĚTŠENÍ
- Omezte zobrazení materializovaného spojení, že počet podřízených záznamů se musí rovnat "n" (konstanta vaší databáze)
Poté můžete provést řadu příkazů vložení/aktualizace/smazání. Když potvrdíte, materializovaný pohled se obnoví, a pokud podmínka není splněna, zobrazí se v tomto bodě chyba porušení omezení.
Bonusovým trikem je zahrnout do materializovaného pohledu pouze řádky, které nesplňují omezení (HAVING count(ChildId) <> 5), takže neztrácíte žádný úložný prostor.