PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zamawianie postgresu, aktualizacji i blokowania

Nie ma ORDER BY w UPDATE polecenie.
Ale jest dla SELECT . Użyj blokowania na poziomie wiersza z FOR UPDATE klauzula w podzapytaniu:

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;

Oczywiście b musi być UNIQUE lub musisz dodać więcej wyrażeń do ORDER BY klauzula, aby była jednoznaczna.

Musisz wymusić tę samą kolejność dla wszystkich UPDATE , DELETE i SELECT .. FOR UPDATE oświadczenia na stole.

Powiązane, więcej szczegółów:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL INSERT FROM SELECT z dodatkową kolumną

  2. SQL kontynuuje wykonywanie zapytań po naruszeniu zduplikowanego klucza

  3. Nie można zainstalować PG gem na moim Macu z Mavericks

  4. Agregat produktów w PostgreSQL

  5. PostgreSQL:ST_GeomFromText(nieznane) nie istnieje