fields null.) When referencing a
column with <literal>ON CONFLICT DO UPDATE</literal>, do not include
the table's name in the specification of a target column. For
example, <literal>INSERT INTO table_name ... ON CONFLICT DO UPDATE
SET table_name.col = 1</literal> is invalid (this follows the general
behavior for <command>UPDATE</command>).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>OVERRIDING SYSTEM VALUE</literal></term>
<listitem>
<para>
If this clause is specified, then any values supplied for identity
columns will override the default sequence-generated values.
</para>
<para>
For an identity column defined as <literal>GENERATED ALWAYS</literal>,
it is an error to insert an explicit value (other than
<literal>DEFAULT</literal>) without specifying either
<literal>OVERRIDING SYSTEM VALUE</literal> or <literal>OVERRIDING USER
VALUE</literal>. (For an identity column defined as
<literal>GENERATED BY DEFAULT</literal>, <literal>OVERRIDING SYSTEM
VALUE</literal> is the normal behavior and specifying it does nothing,
but <productname>PostgreSQL</productname> allows it as an extension.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>OVERRIDING USER VALUE</literal></term>
<listitem>
<para>
If this clause is specified, then any values supplied for identity
columns are ignored and the default sequence-generated values are
applied.
</para>
<para>
This clause is useful for example when copying values between tables.
Writing <literal>INSERT INTO tbl2 OVERRIDING USER VALUE SELECT * FROM
tbl1</literal> will copy from <literal>tbl1</literal> all columns that
are not identity columns in <literal>tbl2</literal> while values for
the identity columns in <literal>tbl2</literal> will be generated by
the sequences associated with <literal>tbl2</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>DEFAULT VALUES</literal></term>
<listitem>
<para>
All columns will be filled with their default values, as if
<literal>DEFAULT</literal> were explicitly specified for each column.
(An <literal>OVERRIDING</literal> clause is not permitted in this
form.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="parameter">expression</replaceable></term>
<listitem>
<para>
An expression or value to assign to the corresponding column.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>DEFAULT</literal></term>
<listitem>
<para>
The corresponding column will be filled with its default value. An
identity column will be filled with a new value generated by the
associated sequence. For a generated column, specifying this is
permitted but merely specifies the normal behavior of computing the
column from its generation expression.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="parameter">query</replaceable></term>
<listitem>
<para>
A query (<command>SELECT</command> statement) that supplies the
rows to be inserted. Refer to the
<xref linkend="sql-select"/>
statement for a description of the syntax.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="parameter">output_alias</replaceable></term>
<listitem>
<para>
An optional substitute name for <literal>OLD</literal> or
<literal>NEW</literal> rows in the <literal>RETURNING</literal> list.
</para>
<para>