summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/ref/alter_policy.sgml
blob: fbc262ba20d17ceed509bdda65d18c8802c4c2ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!--
doc/src/sgml/ref/alter_policy.sgml
PostgreSQL documentation
-->

<refentry id="sql-alterpolicy">
 <indexterm zone="sql-alterpolicy">
  <primary>ALTER POLICY</primary>
 </indexterm>

 <refmeta>
  <refentrytitle>ALTER POLICY</refentrytitle>
  <manvolnum>7</manvolnum>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>

 <refnamediv>
  <refname>ALTER POLICY</refname>
  <refpurpose>change the definition of a row-level security policy</refpurpose>
 </refnamediv>

 <refsynopsisdiv>
<synopsis>
ALTER POLICY <replaceable class="parameter">name</replaceable> ON <replaceable class="parameter">table_name</replaceable> RENAME TO <replaceable class="parameter">new_name</replaceable>

ALTER POLICY <replaceable class="parameter">name</replaceable> ON <replaceable class="parameter">table_name</replaceable>
    [ TO { <replaceable class="parameter">role_name</replaceable> | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
    [ USING ( <replaceable class="parameter">using_expression</replaceable> ) ]
    [ WITH CHECK ( <replaceable class="parameter">check_expression</replaceable> ) ]
</synopsis>
 </refsynopsisdiv>

 <refsect1>
  <title>Description</title>

  <para>
   <command>ALTER POLICY</command> changes the definition of an existing
   row-level security policy.  Note that <command>ALTER POLICY</command>
   only allows the set of roles to which the policy applies and the
   <literal>USING</literal> and <literal>WITH CHECK</literal> expressions to
   be modified.  To change other properties of a policy, such as the command
   to which it applies or whether it is permissive or restrictive, the policy
   must be dropped and recreated.
  </para>

  <para>
   To use <command>ALTER POLICY</command>, you must own the table that
   the policy applies to.
  </para>

  <para>
   In the second form of <command>ALTER POLICY</command>, the role list,
   <replaceable class="parameter">using_expression</replaceable>, and
   <replaceable class="parameter">check_expression</replaceable> are replaced
   independently if specified.  When one of those clauses is omitted, the
   corresponding part of the policy is unchanged.
  </para>
 </refsect1>

 <refsect1>
  <title>Parameters</title>

  <variablelist>
   <varlistentry>
    <term><replaceable class="parameter">name</replaceable></term>
    <listitem>
     <para>
      The name of an existing policy to alter.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">table_name</replaceable></term>
    <listitem>
     <para>
      The name (optionally schema-qualified) of the table that the
      policy is on.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">new_name</replaceable></term>
    <listitem>
     <para>
      The new name for the policy.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">role_name</replaceable></term>
    <listitem>
     <para>
      The role(s) to which the policy applies.  Multiple roles can be
      specified at one time.  To apply the policy to all roles,
      use <literal>PUBLIC</literal>.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">using_expression</replaceable></term>
    <listitem>
     <para>
      The <literal>USING</literal> expression for the policy.
      See <xref linkend="sql-createpolicy"/> for details.
     </para>
    </listitem>
   </varlistentry>

   <varlistentry>
    <term><replaceable class="parameter">check_expression</replaceable></term>
    <listitem>
     <para>
      The <literal>WITH CHECK</literal> expression for the policy.
      See <xref linkend="sql-createpolicy"/> for details.
     </para>
    </listitem>
   </varlistentry>

  </variablelist>
 </refsect1>

 <refsect1>
  <title>Compatibility</title>

  <para>
   <command>ALTER POLICY</command> is a <productname>PostgreSQL</productname> extension.
  </para>
 </refsect1>

 <refsect1>
  <title>See Also</title>

  <simplelist type="inline">
   <member><xref linkend="sql-createpolicy"/></member>
   <member><xref linkend="sql-droppolicy"/></member>
  </simplelist>
 </refsect1>

</refentry>