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

Cập nhật với hàm được gọi một lần cho mỗi hàng trong Postgres 8.4

Bạn đã thử UPDATE .. FROM không chuẩn của Postgres chưa mệnh đề? Tôi tưởng tượng, điều này sẽ hoạt động

update mytable
   set a = first_part(gen.id),
       b = second_part(gen.id),
       c = third_path(gen.id)
  from (
          select genid() as genid, id
          from mytable 
          where package_id = 10
       ) gen
 where mytable.id = gen.id;
 --and package_id = 10 -- This predicate is no longer necessary as the subquery
                       -- already filters on package_id, as Erwin mentioned

Lưu ý rằng tôi đang buộc genid() được gọi chính xác một lần cho mỗi bản ghi trong mytable trong phần chọn phụ. Sau đó, tôi đang tự tham gia mytablegen sử dụng id giả định . Xem tài liệu tại đây:

http://www.postgresql.org/docs/current/interactive /sql-update.html

Tuy nhiên, điều này dường như chỉ được giới thiệu với Postgres 9.0. Nếu điều đó có vẻ quá phức tạp (tức là không dễ đọc lắm), bạn vẫn có thể sử dụng pgplsql với tư cách là người dùng Florin được đề xuất tại đây .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiểu các loại ngày và chức năng của PostgreSQL (bằng các ví dụ)

  2. Cách chuyển đổi Dấu thời gian Unix thành Giá trị Ngày / Giờ trong PostgreSQL

  3. Tôi đã cố gắng thay đổi postgresql md5 thành scram-sha-256 và tôi nhận được xác thực mật khẩu FATAL không thành công

  4. Rails tự động gán id đã tồn tại

  5. Cách quản lý các giao dịch trên nhiều cơ sở dữ liệu