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.