Een van de problemen met SQL is het slechte niveau van ondersteuning voor integriteitsbeperkingen, met name referentiële beperkingen.
Voor alle praktische doeleinden kan uw probleem niet worden opgelost met SQL-beperkingen, tenzij u de beperkingen uitschakelt wanneer u een rij in een tabel wilt invoegen. De reden is dat SQL vereist dat tabellen één voor één worden bijgewerkt en dat de beperking dus moet worden geschonden wanneer nieuwe rijen worden ingevoegd. Dit is een fundamentele beperking van SQL en alle grote DBMS'en hebben er last van.
Er zijn enkele oplossingen, maar geen van hen is perfect. U kunt DEFERRABLE-beperkingen gebruiken als uw DBMS deze heeft (bijvoorbeeld Oracle). Een UITGESTELDE beperking is eigenlijk gewoon een gemakkelijke manier om een beperking uit te schakelen. Of u kunt triggers gebruiken, wat betekent dat de regel procedureel wordt afgedwongen in plaats van door een juiste databasebeperking.