PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Perbarui dengan fungsi yang dipanggil sekali untuk setiap baris di Postgres 8.4

Sudahkah Anda mencoba UPDATE .. FROM non-standar Postgres ayat? Saya membayangkan, ini akan berhasil

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

Perhatikan bahwa saya memaksa genid() dipanggil tepat satu kali per record di mytable dalam subpilihan. Lalu saya bergabung sendiri dengan mytable dan gen menggunakan id hipotetis kolom.Lihat dokumentasi di sini:

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

Namun, ini tampaknya hanya diperkenalkan dengan Postgres 9.0. Jika itu tampaknya terlalu rumit (yaitu tidak terlalu mudah dibaca), Anda masih dapat menggunakan pgplsql sebagai pengguna Florin disarankan di sini .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nonaktifkan pembungkus dalam output Psql

  2. Apakah postgres adalah pengguna PostgreSQL default dan khusus?

  3. Batasan praktis indeks ekspresi di PostgreSQL

  4. Postgresql tidak meminta kata sandi

  5. Membandingkan banyak kueri PostgreSQL