私は 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
を使用して、基礎となるテーブルの情報を永続化します。更新するパラメータがたくさんあります。