当我在 Postgres 数据库中创建或更新函数或过程时,我LANGUAGE 'plpgsql' VOLATILE
会在函数末尾看到。
这是什么意思,它的目的是什么?
问问题
13938 次
2 回答
24
来自Postgres 文档:
VOLATILE 表示即使在单个表扫描中函数值也可以更改,因此无法进行优化。从这个意义上说,相对较少的数据库函数是易变的;一些例子是 random()、currval()、timeofday()。但请注意,任何具有副作用的函数都必须归类为 volatile,即使其结果是完全可预测的,以防止调用被优化掉;一个例子是 setval()。
于 2012-09-25T06:06:33.420 回答
9
尤其重要的是,LANGUAGE 'plpgsql' VOLATILE
意味着有人没有收到备忘录。
中的语言名称CREATE FUNCTION
是一个标识符,不应被引用。应该:
LANGUAGE plpgsql VOLATILE
不当行为会导致令人困惑的错误。看:
关于函数波动:
于 2013-02-20T21:45:13.097 回答