当我在Postgres数据库中创建或更新函数或过程时,我会在函数末尾看到LANGUAGE 'plpgsql' VOLATILE
。
这是什么意思,它的目的是什么?
答案 0 :(得分:17)
VOLATILE表示功能值即使在a内也可以改变 单表扫描,因此无法进行优化。相对较少 数据库函数在这个意义上是不稳定的一些例子是 random(),currval(),timeofday()。但请注意任何具有的功能 副作用必须归类为易变,即使其结果相当 可预测的,以防止呼叫被优化掉;一个例子是 SETVAL()。
答案 1 :(得分:6)
至少,LANGUAGE 'plpgsql' VOLATILE
表示有人没有收到备忘录。
CREATE FUNCTION
中的语言名称是标识符,不应引用。应该是:
LANGUAGE plpgsql VOLATILE
医疗事故可能导致混淆错误。这个相关答案的更多细节:
PostgreSQL procedural language "C" not found