本文介绍了在 Postgres 8.4 中为每一行调用一次的函数进行更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下 UPDATE 语句:
I have the following UPDATE statement:
update mytable
set a = first_part(genid()),
b = second_part(genid()),
c = third_path(genid())
where package_id = 10;
在这个例子中,函数 genid()
每行被调用 3 次,这是错误的 - 我希望 mytable
的每一行只调用一次.
In this example the function genid()
is called three times for each row, which is wrong - I want it to be called only once for each row of mytable
.
我正在使用 PostgreSQL 8.4 数据库.如何编写正确的更新?
I'm using PostgreSQL 8.4 database. How to write the correct update?
我尝试过这样的事情:
update mytable
set a = first_part(g),
b = second_part(g),
c = third_path(g)
where package_id = 10
from genid() as g;
但它不起作用,因为对于整个更新语句,genid()
只被调用了 如果这看起来太复杂(即不太可读),您仍然可以以用户身份使用 pgplsql Florin 建议在这里.
If that seems too complicated (i.e. not very readable), you can still resort to pgplsql as user Florin suggested here.
这篇关于在 Postgres 8.4 中为每一行调用一次的函数进行更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!