============ ALTER POLICY ============ .. container:: refentry :name: SQL-ALTERPOLICY .. container:: titlepage .. container:: refnamediv .. rubric:: ALTER POLICY :name: alter-policy ALTER POLICY — 更改一条行级安全性策略的定义 .. container:: refsynopsisdiv .. rubric:: 大纲 :name: 大纲 .. code:: synopsis ALTER POLICY name ON table_name RENAME TO new_name ALTER POLICY name ON table_name [ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ] [ USING ( using_expression ) ] [ WITH CHECK ( check_expression ) ] .. container:: refsect1 :name: id-1.9.3.23.5 .. rubric:: 描述 :name: 描述 ``ALTER POLICY``\ 更改一条现有行级安全性策略的定义。 请注意,\ ``ALTER POLICY``\ 只允许修改策略所应用的角色集合, 和要修改的\ ``USING``\ 和\ ``WITH CHECK``\ 表达式。 要更改策略的其他属性,例如其应用的命令,或者是允许还是限制, 则必须删除并重新创建策略。 要使用\ ``ALTER POLICY``\ ,你必须拥有该策略所适用的 表。 在\ ``ALTER POLICY``\ 的第二种形式中,如果指定了角色列表、 *``using_expression``*\ 以及 *``check_expression``*\ , 它们会被独立地替换。当这些子句之一被省略时,策略的对应部分不会被更改。 .. container:: refsect1 :name: id-1.9.3.23.6 .. rubric:: 参数 :name: 参数 .. container:: variablelist *``name``* 要更改的现有策略的名称。 *``table_name``* 该策略所在的表的名称(可以被模式限定)。 *``new_name``* 该策略的新名称。 *``role_name``* 该策略适用的角色。可以一次指定多个角色。要把该策略 应用于所有角色,可使用\ ``PUBLIC``\ 。 *``using_expression``* 该策略的\ ``USING``\ 表达式。详见 `CREATE POLICY `__\ 。 *``check_expression``* 该策略的\ ``WITH CHECK``\ 表达式。详见 `CREATE POLICY `__\ 。 .. container:: refsect1 :name: id-1.9.3.23.7 .. rubric:: 兼容性 :name: 兼容性 ``ALTER POLICY``\ 是一种PostgreSQL扩展。 .. container:: refsect1 :name: id-1.9.3.23.8 .. rubric:: 另见 :name: 另见 `CREATE POLICY `__, `DROP POLICY `__