Che*_*zaz 5 postgresql functions
我有一个函数可以进行一些数学计算。它调用另一个易变的函数。我想知道调用函数是否可以声明为immutable
or stable
,或者它也必须声明为volatile
。
该文档描述IMMUTABLE
为
IMMUTABLE 表示该函数不能修改数据库,并且在给定相同的参数值时始终返回相同的结果;也就是说,它不进行数据库查找或以其他方式使用未直接出现在其参数列表中的信息。[...]
这意味着您可以执行以下操作:
CREATE OR REPLACE FUNCTION immutablerandom()
RETURNS integer
LANGUAGE plpgsql
IMMUTABLE
AS $$
DECLARE a numeric;
BEGIN
a := random();
RETURN 1;
END;
$$;
Run Code Online (Sandbox Code Playgroud)
random()
是一个易失性函数,并且immutablerandom()
满足 的定义条件IMMUTABLE
。如果这实际上有意义,那就是另一回事了——你必须完全放弃 易失性函数的结果,并且在实践中我看不到可以使用它的情况。
归档时间: |
|
查看次数: |
272 次 |
最近记录: |