sql >> Database >  >> RDS >> PostgreSQL

Wanneer controleert Postgres unieke beperkingen?

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:




  1. Groeperen op maand of 0 indien geen resultaten?

  2. Oracle Query om QTY per jaar samen te voegen - alleen laatste 3 jaar

  3. Verkrijg de positie van een teken in een tekenreeks in SQLite met Instr()

  4. laravel 5.6 bulksgewijs invoegen van json-gegevens