Един от проблемите на SQL е лошото му ниво на поддръжка за ограничения за интегритет, особено референтни ограничения.
За всички практически цели вашият проблем не може да бъде разрешен с помощта на SQL ограничения, освен ако не деактивирате ограниченията, когато искате да вмъкнете ред в таблица. Причината е, че SQL изисква таблиците да се актуализират една по една и така ограничението трябва да бъде нарушено, когато се вмъкват нови редове. Това е основно ограничение на SQL и всички основни СУБД страдат от него.
Има някои решения, но нито едно от тях не е перфектно. Можете да използвате ограничения DEFERRABLE, ако вашата СУБД ги има (например Oracle). Ограничението DEFERRABLE всъщност е просто лесен начин за деактивиране на ограничение. Или можете да използвате тригери, което означава, че правилото се прилага процедурно, а не чрез правилно ограничение на базата данни.