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

Postgres, opdatering og låsebestilling

Der er ingen ORDER BY i OPDATERING kommando.
Men der er for SELECT . Brug låsning på rækkeniveau med <-koden>TIL OPDATERING klausul i en underforespørgsel:

UPDATE foo f
SET    a = 1
FROM (
   SELECT b FROM foo
   WHERE  b IN (1,2,3,4)
   ORDER BY b
   FOR   UPDATE
   ) upd
WHERE f.b = upd.b;

Selvfølgelig, b skal være UNIQUE eller du skal tilføje flere udtryk til ORDER BY klausul for at gøre det utvetydigt.

Og du skal håndhæve den samme ordre for alle OPDATERING , SLET og VÆLG .. TIL OPDATERING udsagn på bordet.

Relateret, med flere detaljer:



  1. Vælg statement REF oracle

  2. Kan ikke liste dataene i min Android-applikation fra Mysql

  3. PL/SQL-udløserproblemer

  4. Sådan opretter du forbindelse til en database ved hjælp af Sequel Pro