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

Modellering af et-til-konstant forhold

Det er ikke nemt at gøre dette, så det er sundt og korrekt, selv når flere sessioner laver opdateringer. Du vil få dig selv i et rod, hvis du prøver dette med triggere, og Oracles deklarative begrænsninger er ikke stærke nok til at udtrykke dette.

Det kan gøres på følgende måde:-

  1. Opret en materialiseret visningslog på både de overordnede og de underordnede tabeller
  2. Opret en materialiseret sammenføjningsvisning, der føjer dem sammen og tæller antallet af børn grupperet af forælderen. Dette skal opdateres HURTIG VED COMMIT
  3. Sæt en begrænsning på den materialiserede joinvisning, at antallet af underordnede poster skal være lig med "n" (din databasekonstant)

Du kan derefter lave en række insert/update/delete statements. Når du forpligter dig, vil den materialiserede visning blive opdateret, og hvis betingelsen ikke er opfyldt, vil du få en begrænsningsfejl på det tidspunkt.

En lille bonus er kun at inkludere rækker, der ikke er begrænsninger, i den materialiserede visning (HAR count(ChildId) <> 5), så du ikke spilder nogen lagerplads.



  1. opdeling af en dato/klokkeslæt kolonne i år, måned og uge

  2. Efter opdatering til macOS Big Sur kan jeg ikke oprette forbindelse til min PostgreSQL-database med MAMP

  3. Er der en Profiler-ækvivalent til MySql?

  4. Sqlalchemy og PostgreSql:hvordan indstilles primær nøgle manuelt uden konflikter i fremtiden?