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

Hvad er den bedste måde at håndhæve et 'undersæt'-forhold med integritetsbegrænsninger

Et af problemerne med SQL er dets ringe niveau af understøttelse af integritetsbegrænsninger, især referentielle begrænsninger.

For alle praktiske formål kan dit problem ikke løses ved hjælp af SQL-begrænsninger, medmindre du deaktiverer begrænsningerne, når du vil indsætte en række i en tabel. Årsagen er, at SQL kræver, at tabeller opdateres én ad gangen, og derfor skal begrænsningen overtrædes, hver gang nye rækker indsættes. Dette er en grundlæggende begrænsning af SQL, og alle de store DBMS'er lider under det.

Der er nogle løsninger, men ingen af ​​dem er perfekte. Du kan bruge DEFERRABLE-begrænsninger, hvis dit DBMS har dem (f.eks. Oracle). En udskydningsbar begrænsning er egentlig bare en nem måde at deaktivere en begrænsning på. Eller du kan bruge triggere, hvilket betyder, at reglen håndhæves proceduremæssigt snarere end gennem en ordentlig databasebegrænsning.



  1. Rullende 90 dages datovindue i SQL Oracle

  2. Problemer med GROUP BY CASE

  3. Har problemer med at oprette en midlertidig tabel fra en UNION

  4. Hvordan opretter man forbindelse til Amazon RDS via SSL?