Postgres besluit beperkingen van het type IMMEDIATELY
. te controleren op een ander tijdstip dan voorgesteld in de SQL-standaard.
In het bijzonder de documentatie voor SET CONSTRAINTS
staten (nadruk van mij):
Postgres kiest ervoor om deze query uit te voeren met behulp van een plan dat resulteert in een tijdelijke botsing voor sort_order
en ONMIDDELLIJK mislukt. Houd er rekening mee dat voor hetzelfde schema en dezelfde gegevens dezelfde query kan werken of mislukken, afhankelijk van het uitvoeringsplan.
U moet de beperking DEFERRABLE
. maken of DEFERRABLE INITIALLY DEFERRED
, die de verificatie van de beperking vertraagt tot het einde van de transactie of tot het punt waarop een verklaring SET CONSTRAINTS ... IMMEDIATE
wordt uitgevoerd.
Addendum van de opmerking van @HansGinzel: