postgresql - 可以将表作为参数的函数声明为 IMMUTABLE 吗?
问题描述
假设一个表定义如下:
CREATE TABLE clients (
active BOOLEAN
,deceased BOOLEAN
);
我定义了一个特定于该表的函数(我不记得它是如何调用的,也无法在CREATE FUNCTION
文档或搜索引擎中找到它):
CREATE FUNCTION isvisible(clients) RETURNS BOOLEAN
AS $BODY$
BEGIN
RETURN $1.active AND NOT $1.deceased;
END;
$BODY$ LANGUAGE plpgsql STABLE;
然后我得到客户列表:
SELECT * FROM clients c WHERE c.isvisible;
在实际表中,有几个字段可以改变记录的可见状态(主要在客户列表中)。我计划拥有这样的功能,以便整个应用程序的可见状态保持一致。
- 将这样的函数声明为 IMMUTABLE 是否安全?我想知道,因为任何真实字段(即:
active
或deceased
)都可能在事务中发生变化。 - 我想尽量减少这种功能可能导致的性能下降。并且由于我有几个想要实现此类辅助函数的案例,因此在概括这个概念之前,我想听听您的建议。
解决方案
推荐阅读
- java - 无法获得 go daddy ssl 证书以使用 spring boot
- ios - UISearchBar 清除按钮颜色变化
- spring - Spring Cloud 配置服务 - Git vs Native
- python - 重采样后如何从列中创建新的数据框?
- java - Android Studio,活动切换问题
- java - 如何将带有标题的 csv 文件流式传输到 HashMap
在 Java 中? - angular - How to get the text from a parent element only and not from its children - Protractor
- android - Room: DAO query that removes duplicates given multiple columns as criteria
- java - 刷新 SharedPreference 以在用户登录时检索新数据
- web-services - Does Outlook.com provides any webhook/push-notification support?