PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres, подреждане на актуализации и заключване

Няма ORDER BY в UPDATE команда.
Но има за SELECT . Използвайте заключване на ниво ред с FOR UPDATE клауза в подзаявка:

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;

Разбира се, b трябва да е UNIQUE или трябва да добавите още изрази към ORDER BY клауза, за да стане недвусмислено.

И трябва да наложите една и съща поръчка за всички UPDATE , DELETE и SELECT .. FOR UPDATE изявления на масата.

Свързани, с повече подробности:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да покажа WORK_MEM на външни PostgreSQL връзки?

  2. Как да разберем ОБЯСНИТЕЛЕН АНАЛИЗ

  3. PostgreSQL 9.X bytea представяне в 'hex' или 'escape' за миниатюрни изображения

  4. PHP не зарежда php_pgsql.dll в Windows

  5. Изключете предупреждението в sqlalchemy