<term><literal>SELECT</literal></term>
<listitem>
<para>
Allows <command>SELECT</command> from
any column, or specific column(s), of a table, view, materialized
view, or other table-like object.
Also allows use of <command>COPY TO</command>.
This privilege is also needed to reference existing column values in
<command>UPDATE</command>, <command>DELETE</command>,
or <command>MERGE</command>.
For sequences, this privilege also allows use of the
<function>currval</function> function.
For large objects, this privilege allows the object to be read.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-insert">
<term><literal>INSERT</literal></term>
<listitem>
<para>
Allows <command>INSERT</command> of a new row into a table, view,
etc. Can be granted on specific column(s), in which case
only those columns may be assigned to in the <command>INSERT</command>
command (other columns will therefore receive default values).
Also allows use of <command>COPY FROM</command>.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-update">
<term><literal>UPDATE</literal></term>
<listitem>
<para>
Allows <command>UPDATE</command> of any
column, or specific column(s), of a table, view, etc.
(In practice, any nontrivial <command>UPDATE</command> command will
require <literal>SELECT</literal> privilege as well, since it must
reference table columns to determine which rows to update, and/or to
compute new values for columns.)
<literal>SELECT ... FOR UPDATE</literal>
and <literal>SELECT ... FOR SHARE</literal>
also require this privilege on at least one column, in addition to the
<literal>SELECT</literal> privilege. For sequences, this
privilege allows use of the <function>nextval</function> and
<function>setval</function> functions.
For large objects, this privilege allows writing or truncating the
object.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-delete">
<term><literal>DELETE</literal></term>
<listitem>
<para>
Allows <command>DELETE</command> of a row from a table, view, etc.
(In practice, any nontrivial <command>DELETE</command> command will
require <literal>SELECT</literal> privilege as well, since it must
reference table columns to determine which rows to delete.)
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-truncate">
<term><literal>TRUNCATE</literal></term>
<listitem>
<para>
Allows <command>TRUNCATE</command> on a table.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-references">
<term><literal>REFERENCES</literal></term>
<listitem>
<para>
Allows creation of a foreign key constraint referencing a
table, or specific column(s) of a table.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-trigger">
<term><literal>TRIGGER</literal></term>
<listitem>
<para>
Allows creation of a trigger on a table, view, etc.
</para>
</listitem>
</varlistentry>
<varlistentry id="ddl-priv-create">
<term><literal>CREATE</literal></term>
<listitem>
<para>
For databases, allows new schemas and publications to be created within
the database, and allows trusted extensions to be installed within
the database.
</para>
<para>
For schemas, allows new objects to be created within the schema.
To rename an existing object, you must own the
object <emphasis>and</emphasis> have this privilege for the containing
schema.
</para>
<para>
For tablespaces, allows tables, indexes, and temporary files to be