2

データベースを変更できないという不変の制限があると思いました。

以下は、「some_table」に新しい行を挿入します。

CREATE FUNCTION insert_row() RETURNS void AS
$$
  plv8.execute('INSERT INTO some_table (number) VALUES ($1)', [123]);
$$
LANGUAGE plv8 IMMUTABLE STRICT;

関数がデータベースを変更するのを防ぐことはできませんか?

4

1 に答える 1

0

これは私にとって期待どおりに機能します。

次のようなものを実行すると:

select insert_row() from some_OTHER_table;

some_other_table の行数に関係なく、some_table で正確に 1 つの新しい行を取得します。

関数でデータベースを変更したくない場合は、挿入ステートメントや更新ステートメントを入れないでください。

于 2014-11-19T16:43:51.347 に答える