【发布时间】:2012-09-13 18:50:11
【问题描述】:
我有plpgsql函数:
CREATE OR REPLACE FUNCTION test() RETURNS VOID AS
$$
DECLARE
my_row my_table%ROWTYPE;
BEGIN
SELECT * INTO my_row FROM my_table WHERE id='1';
my_row.date := now();
END;
$$ LANGUAGE plpgsql;
我想知道是否可以直接更新my_row记录。
我现在发现的唯一方法是:
UPDATE my_table SET date=now() WHERE id='1';
请注意,这只是一个示例函数,真正的函数远比这复杂。
我使用的是 PostgreSQL 9.2。
更新:
对不起,我想说的是:
SELECT * INTO my_row FROM my_table INTO my_row WHERE id='1';
make_lots_of_complicated_modifications_to(my_row, other_complex_parameters);
UPDATE my_row;
即使用 my_row 将信息持久保存在基础表中。我有很多参数要更新。
【问题讨论】:
-
你为什么不首先选择 NOW() 而不是模糊的 * ?
-
您要更新 plpgsql 函数中的变量还是基础表中的行?
-
我想将变量持久化到表中,而不必重写逐字段查询。
标签: postgresql sql-update plpgsql