↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 存储参数 / 视图选项

check_option

视图检查选项

检查通过可更新视图写入的新行是否仍符合视图条件。

当前查看 PostgreSQL 18.6。

说明

此参数可以是 local 或 cascaded,等同于指定 WITH [ CASCADED | LOCAL ] CHECK OPTION (见下文)。

适用对象
视图选项
取值类型
枚举值
可选值
local、cascaded

用法

WITH (check_option = value)

视图选项

普通视图不存储查询结果。此选项控制视图的安全或更新语义,使用 CREATE VIEW 的 WITH 子句或 ALTER VIEW 设置,不是表或索引的物理存储参数。

写入检查的语义

该选项控制自动可更新视图的行为。指定该选项时,会检查对该视图执行的 INSERT、 UPDATE 和 MERGE 命令,以确保新行满足视图定义条件(即确保能够通过该视图看到这些新行)。如果不满足条件,该修改将被拒绝。若未指定 CHECK OPTION,则允许在该视图上执行 INSERT、 UPDATE 和 MERGE 命令来创建通过该视图不可见的行。支持以下检查选项:

LOCAL

新行只会根据该视图自身直接定义的条件进行检查。底层基视图上定义的任何条件都不会被检查(除非它们也指定了 CHECK OPTION)。

CASCADED

新行会根据该视图及所有底层基视图的条件进行检查。如果指定了 CHECK OPTION,但既未指定 LOCAL 也未指定 CASCADED,则假定为 CASCADED。

CHECK OPTION 不能与 RECURSIVE 视图一起使用。

注意, CHECK OPTION 仅支持自动可更新且不带 INSTEAD OF 触发器或 INSTEAD 规则的视图。如果一个自动可更新视图定义在带有 INSTEAD OF 触发器的基视图之上,则可以使用 LOCAL CHECK OPTION 检查该自动可更新视图自身的条件,但不会检查带有 INSTEAD OF 触发器的基视图上的条件(级联检查选项不会继续向下级联到触发器可更新视图,而直接定义在触发器可更新视图上的任何检查选项也都会被忽略)。如果该视图或其任何基关系带有会导致 INSERT 或 UPDATE 命令被重写的 INSTEAD 规则,则在重写后的查询中,所有检查选项都会被忽略,包括来自定义在带有 INSTEAD 规则的关系之上的自动可更新视图的任何检查。若该视图或其任何基关系带有规则,则不支持 MERGE。

相关条目

文档与源码

查看来源构建
版本
18.6
构建
本地中文手册 18.6
来源指纹
2892290581c230fa73001957e37b5061767c1449e17d120024cc081bfc36a941

同类条目

返回存储参数 · 此条目的收录范围为 PostgreSQL 10 至 20;起点不一定是实际引入版本。