我有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;
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以直接更新my_row记录。
我现在发现要做的唯一方法是:
UPDATE my_table SET date=now() WHERE id='1';
Run Code Online (Sandbox Code Playgroud)
请注意,这只是一个示例函数,实际的函数要比这复杂得多。
我正在使用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;
Run Code Online (Sandbox Code Playgroud)
即使用my_ row将信息保留在基础表中。我有很多参数需要更新。