sql >> Databáze >  >> RDS >> PostgreSQL

Postgres, aktualizace a zamykání objednávek

Neexistuje žádný ORDER BY v UPDATE příkaz.
Ale existuje pro SELECT . Použijte uzamykání na úrovni řádků pomocí PRO AKTUALIZACI doložka v dílčím dotazu:

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;

Samozřejmě, b musí být UNIQUE nebo potřebujete přidat další výrazy do ORDER BY klauzule, aby to bylo jednoznačné.

A musíte vynutit stejný příkaz pro všechny AKTUALIZACE , DELETE a VYBRAT .. PRO AKTUALIZACI prohlášení na stole.

Související s dalšími podrobnostmi:



  1. kurzorový výstup použití v select

  2. Extrahujte 1. tři oktety IPV4

  3. postgresql createdb a CREATE DATABASE poskytují neprázdnou databázi. co vidlička?

  4. Jak nainstalovat MySQL 8.0 na RHEL/CentOS 8/7 a Fedora 35