ALTER ACCESS POLICY
对现有访问策略执行以下操作之一:
-
通过更改其表达式和启用/禁用策略来修改访问策略。
-
将访问策略从一个表复制到另一个表。
语法
修改策略:
ALTER ACCESS POLICY ON [[database.]schema.]table
{ FOR COLUMN column [ expression ] | FOR ROWS [ WHERE expression ] } { GRANT TRUSTED } { ENABLE | DISABLE }
复制政策:
ALTER ACCESS POLICY ON [[database.]schema.]table
{ FOR COLUMN column | FOR ROWS } COPY TO TABLE table;
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。-
表
- 包含要启用、禁用或复制的访问策略的表的名称。
-
FOR COLUMN column [expression]
- 替换之前为此列设置的访问策略表达式。从
FOR COLUMN
子句中省略 expression,以便仅启用或禁用此策略,或将其复制到其他表中。 -
FOR ROWS [WHERE expression]
- 替换之前为此表设置的行访问策略表达式。从
FOR ROWS
子句中省略WHERE expression
,以便仅启用或禁用此策略,或将其复制到另一个表。 -
GRANT TRUSTED
指定 GRANT 语句在确定用户是否可以对目标表执行 DML 操作时优先于访问策略。如果省略,则只有在访问策略允许用户查看原始未更改状态的存储数据时,用户才能修改表数据。有关详细信息,请参阅访问策略和 DML 操作。
重要
GRANT TRUSTED 仅影响 DML 操作,并且不允许用户查看访问策略将屏蔽的数据。指定此选项可能允许具有某些授权的用户更新他们无法查看的数据。ENABLE | DISABLE
- 指示在表级别启用还是禁用访问策略。
-
COPY TO TABLE tablename
- 将现有访问策略复制到指定的表。复制的访问策略包括启用/禁用和 GRANT TRUSTED 状态。
需要满足以下要求:
-
复制列访问策略:
-
目标表必须包含相同名称和兼容数据类型的列。
-
目标列不得包含访问策略。
-
-
复制行访问策略:目标表不得包含访问策略。
-
特权
修改访问策略
非超级用户:表的所有权
复制访问策略
非超级用户:源表和目标表的所有权
示例
请参阅 管理访问策略