Dit doen zodat het goed en correct is, zelfs wanneer meerdere sessies updates uitvoeren, is niet eenvoudig. Je zult jezelf in de war brengen als je dit probeert met triggers, en de declaratieve beperkingen van Oracle zijn niet krachtig genoeg om dit uit te drukken.
Het kan als volgt worden gedaan:-
- Maak een gematerialiseerd weergavelogboek voor zowel de bovenliggende als de onderliggende tabellen
- Maak een gerealiseerde samenvoegweergave die ze samenvoegt en het aantal kinderen telt dat is gegroepeerd door de bovenliggende. Dit moet SNEL VERNIEUWEN OP COMMIT
- Stel een beperking op aan de gerealiseerde join-weergave dat het aantal onderliggende records gelijk moet zijn aan "n" (uw databaseconstante)
U kunt dan een reeks instructies voor invoegen/bijwerken/verwijderen uitvoeren. Wanneer u zich commit, wordt de gerealiseerde weergave vernieuwd en als niet aan de voorwaarde wordt voldaan, krijgt u op dat moment een beperkingsfout.
Een extra trucje is om alleen rijen op te nemen die niet aan de beperking voldoen in de gematerialiseerde weergave (HEVING count(ChildId) <> 5), zodat u geen opslagruimte verspilt.