sql >> Databasteknik >  >> RDS >> PostgreSQL

När kontrollerar Postgres unika begränsningar?

Postgres bestämmer sig för att kontrollera begränsningar av typen IMMEDIATELY vid en annan tidpunkt än vad som föreslås i SQL-standarden.

Specifikt dokumentationen för SET CONSTRAINTS anger (min betoning):

Postgres väljer att köra denna fråga med en plan som resulterar i en tillfällig kollision för sort_order och OMEDELBART misslyckas. Observera att det betyder att för samma schema och samma data kan samma fråga fungera eller misslyckas beroende på exekveringsplanen.

Du måste göra begränsningen DEFERRABLE eller DEFERRABLE INITIALLY DEFERRED , vilket fördröjer verifieringen av begränsningen till slutet av transaktionen eller upp till den punkt där en sats SET CONSTRAINTS ... IMMEDIATE exekveras.

Tillägg från @HansGinzels kommentar:




  1. Infoga formulärdata i två olika tabeller på databasen via jsp-sidan

  2. Påverkar storleken på loggfilen databasens prestanda? Hur krymper man loggfilen?

  3. Förbättra MySQL-prestanda på en Run-Once Query med en stor datamängd

  4. Problem med installation av Ruby on Rails - Hur använder man WAMP MySQL-installation?