我应该在执行查询的函数中使用STABLE还是VOLATILE?

时间:2016-08-31 15:19:49

标签: postgresql plpgsql postgresql-9.5

我正在尝试使用正确的修饰符来检查计数是否大于或等于2,但我不确定使用哪一个,这是函数:

<p>Click the button:</p>

<button ng-click="name = A" ng_init="name=0">A</button>
<button ng-click="name = B" ng_init="name=0">B</button>

<p>This is {{name}}.</p>

BTW此函数将被插入时的触发器调用。

1 个答案:

答案 0 :(得分:3)

根据手册(https://www.postgresql.org/docs/current/static/sql-createfunction.html

  

STABLE表示该函数无法修改数据库,并且在单个表扫描中它将始终为相同的参数值返回相同的结果,但其结果可能会在SQL语句中发生更改。

因此,如果您修改数据库或在不更改数据库的情况下提供不同的结果,请使用VOLATILE,否则请使用STABLE

对于您问题中的代码STABLE应该没问题。

触发器调用它的事实没有区别,因为它是您声明为STABLE的函数的内容而不是它的用法。