sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvornår tjekker Postgres unikke begrænsninger?

Postgres beslutter at kontrollere begrænsninger af typen IMMEDIATELY på et andet tidspunkt end foreslået i SQL-standarden.

Specifikt dokumentationen for SET CONSTRAINTS anfører (min fremhævelse):

Postgres vælger at udføre denne forespørgsel ved hjælp af en plan, der resulterer i en midlertidig kollision for sort_order og STRAKS fejler. Bemærk, at det betyder, at for det samme skema og de samme data kan den samme forespørgsel fungere eller mislykkes afhængigt af eksekveringsplanen.

Du bliver nødt til at gøre begrænsningen DEFERRABLE eller DEFERRABLE INITIALLY DEFERRED , som forsinker bekræftelsen af ​​begrænsningen indtil slutningen af ​​transaktionen eller op til det punkt, hvor en sætning SET CONSTRAINTS ... IMMEDIATE udføres.

Tilføjelse fra @HansGinzels kommentar:




  1. Forbind Metabase med MySQL til dataudforskning

  2. Bestemmelse af OID for en tabel i Postgres 9.1?

  3. Hvordan giver man position nul for spinner en promptværdi?

  4. Fejl:ORA-06553:PLS-306:forkert antal eller typer af argumenter i opfordring til procedure