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
.