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 中得到一个新行。

如果您不希望您的函数修改您的数据库,只需不要将插入或更新语句放入其中。

于 2014-11-19T16:43:51.347 回答