![]() All table_name unique indexes that, without regard to order, contain exactly the conflict_target-specified columns/expressions are inferred (chosen) as arbiter indexes. When performing inference, it consists of one or more index_column_name columns and/or index_expression expressions, and an optional index_predicate. ON CONFLICT DO UPDATE updates the existing row that conflicts with the row proposed for insertion as its alternative action.Ĭonflict_target can perform unique index inference. ON CONFLICT DO NOTHING simply avoids inserting a row as its alternative action. For each individual row proposed for insertion, either the insertion proceeds, or, if an arbiter constraint or index specified by conflict_target is violated, the alternative conflict_action is taken. The optional ON CONFLICT clause specifies an alternative action to raising a unique violation or exclusion constraint violation error. Write * to return all columns of the inserted or updated row(s). The expression can use any column names of the table named by table_name. output_expressionĪn expression to be computed and returned by the INSERT command after each row is inserted or updated. Refer to the SELECT statement for a description of the syntax. queryĪ query ( SELECT statement) that supplies the rows to be inserted. ![]() The corresponding column will be filled with its default value. expressionĪn expression or value to assign to the corresponding column. DEFAULT VALUESĪll columns will be filled with their default values. ON CONFLICT DO UPDATE SET table_l = 1 is invalid (this follows the general behavior for UPDATE). (Inserting into only some fields of a composite column leaves the other fields null.) When referencing a column with ON CONFLICT DO UPDATE, do not include the table's name in the specification of a target column. The column name can be qualified with a subfield name or array subscript, if needed. The name of a column in the table named by table_name. This is particularly useful when ON CONFLICT DO UPDATE targets a table named excluded, since that's also the name of the special table representing rows proposed for insertion. When an alias is provided, it completely hides the actual name of the table. The name (optionally schema-qualified) of an existing table. In such a case both sets of with_query can be referenced within the query, but the second one takes precedence since it is more closely nested. It is possible for the query ( SELECT statement) to also contain a WITH clause. The WITH clause allows you to specify one or more subqueries that can be referenced by name in the INSERT query. If you use the query clause to insert rows from a query, you of course need to have SELECT privilege on any table or column used in the query. Use of the RETURNING clause requires SELECT privilege on all columns mentioned in RETURNING. However, ON CONFLICT DO UPDATE also requires SELECT privilege on any column whose values are read in the ON CONFLICT DO UPDATE expressions or condition. Similarly, when ON CONFLICT DO UPDATE is specified, you only need UPDATE privilege on the column(s) that are listed to be updated. If a column list is specified, you only need INSERT privilege on the listed columns. If ON CONFLICT DO UPDATE is present, UPDATE privilege on the table is also required. You must have INSERT privilege on a table in order to insert into it. WHERE clause condition was not satisfied, the row will not be returned. For example, if a row was locked but not updated because an ON CONFLICT DO UPDATE. Only rows that were successfully inserted or updated will be returned. The syntax of the RETURNING list is identical to that of the output list of SELECT. However, any expression using the table's columns is allowed. ![]() This is primarily useful for obtaining values that were supplied by defaults, such as a serial sequence number. The optional RETURNING clause causes INSERT to compute and return value(s) based on each row actually inserted (or updated, if an ON CONFLICT DO UPDATE clause was used). ON CONFLICT can be used to specify an alternative action to raising a unique constraint or exclusion constraint violation error. If the expression for any column is not of the correct data type, automatic type conversion will be attempted. The values supplied by the VALUES clause or query are associated with the explicit or implicit column list left-to-right.Įach column not present in the explicit or implicit column list will be filled with a default value, either its declared default value or null if there is none. If no list of column names is given at all, the default is all the columns of the table in their declared order or the first N column names, if there are only N columns supplied by the VALUES clause or query. The target column names can be listed in any order. ![]() One can insert one or more rows specified by value expressions, or zero or more rows resulting from a query.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |