sql >> Databasteknik >  >> RDS >> PostgreSQL

Kan inte VÄLJA från UPDATE RETURNING-satsen i postgres

Innan PostgreSQL 9.1 kunde INSERT/UPDATE/DELETE endast användas som satser på toppnivå. Det är därför du får ett syntaxfel.

Från och med 9.1 kan du använda datamodifierande satser med vanliga tabelluttryck. Din exempelfråga skulle se ut så här:

WITH updated AS (UPDATE test SET description = 'test' RETURNING id)
SELECT * FROM test WHERE id IN (SELECT id FROM updated);

Var försiktig med att välja från den just modifierade tabellen. Du kan få förvirrande resultat på det sättet. Eftersom frågorna exekveras i samma ögonblicksbild, kommer SELECT inte att se effekterna av UPDATE-satsen.



  1. Påskynda radräkningen i MySQL

  2. Använd molnformationsmallar för att spinna upp MySQL-instanser på RDS

  3. Postgres:vakuumkommandot rensar inte upp döda tuplar

  4. Använda SQL Views för att lägga till/redigera data i Microsoft Access