PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres, cập nhật và khóa thứ tự

Không có ORDER BY trong UPDATE lệnh.
Nhưng có đối với SELECT . Sử dụng khóa cấp hàng > với FOR UPDATE mệnh đề trong một truy vấn con:

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;

Tất nhiên, b phải là UNIQUE hoặc bạn cần thêm nhiều biểu thức hơn vào ORDER BY để làm cho nó rõ ràng.

Và bạn cần thực thi cùng một lệnh cho tất cả UPDATE , DELETESELECT .. FOR UPDATE trên bảng.

Có liên quan, với thêm chi tiết:



  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 làm thế nào để chọn các giá trị trong cột từ một bảng mà chỉ có sẵn trong một bảng khác?

  2. Tạo dữ liệu và chất lượng phần cứng

  3. Giao thức Vi phạm:LỖI:liên kết thông báo cung cấp 0 tham số, nhưng câu lệnh đã chuẩn bị yêu cầu 1

  4. Tạo chuỗi thời gian giữa hai ngày trong PostgreSQL

  5. Tại sao tôi không thể loại trừ các cột phụ thuộc khỏi `GROUP BY` khi tôi tổng hợp theo một khóa?