diff options
author | Tom Lane | 2010-01-18 00:32:21 +0000 |
---|---|---|
committer | Tom Lane | 2010-01-18 00:32:21 +0000 |
commit | 04ef4040186ac08b78ef0c88b78df3b0af4d6346 (patch) | |
tree | b8699496e966ed98fe6d7be2c3a889de84ac858c | |
parent | 9a915e596f38a97f10e00d388f18e178136937eb (diff) |
Update SET CONSTRAINTS reference page --- it failed to mention EXCLUDE
constraints and was lacking a couple of other interesting details.
-rw-r--r-- | doc/src/sgml/ref/set_constraints.sgml | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/doc/src/sgml/ref/set_constraints.sgml b/doc/src/sgml/ref/set_constraints.sgml index e03910e2529..94c2ecabc72 100644 --- a/doc/src/sgml/ref/set_constraints.sgml +++ b/doc/src/sgml/ref/set_constraints.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/set_constraints.sgml,v 1.17 2009/07/29 20:56:17 tgl Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/ref/set_constraints.sgml,v 1.18 2010/01/18 00:32:21 tgl Exp $ --> <refentry id="SQL-SET-CONSTRAINTS"> <refmeta> <refentrytitle id="SQL-SET-CONSTRAINTS-title">SET CONSTRAINTS</refentrytitle> @@ -8,7 +8,7 @@ <refnamediv> <refname>SET CONSTRAINTS</refname> - <refpurpose>set constraint checking modes for the current transaction</refpurpose> + <refpurpose>set constraint check timing for the current transaction</refpurpose> </refnamediv> <indexterm zone="sql-set-constraints"> @@ -46,7 +46,8 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">name</replaceable> [, ... <para> <command>SET CONSTRAINTS</command> with a list of constraint names changes - the mode of just those constraints (which must all be deferrable). The + the mode of just those constraints (which must all be deferrable). Each + constraint name can be schema-qualified. The current schema search path is used to find the first matching name if no schema name is specified. <command>SET CONSTRAINTS ALL</command> changes the mode of all deferrable constraints. @@ -66,13 +67,14 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">name</replaceable> [, ... </para> <para> - Currently, only <literal>UNIQUE</>, <literal>PRIMARY KEY</>, and - <literal>REFERENCES</> (foreign key) constraints are affected by this - setting. <literal>NOT NULL</> and <literal>CHECK</> constraints are + Currently, only <literal>UNIQUE</>, <literal>PRIMARY KEY</>, + <literal>REFERENCES</> (foreign key), and <literal>EXCLUDE</> + constraints are affected by this setting. + <literal>NOT NULL</> and <literal>CHECK</> constraints are always checked immediately when a row is inserted or modified (<emphasis>not</> at the end of the statement). - Uniqueness constraints that have not been declared <literal>DEFERRABLE</> - are also checked immediately. + Uniqueness and exclusion constraints that have not been declared + <literal>DEFERRABLE</> are also checked immediately. </para> <para> @@ -86,6 +88,16 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">name</replaceable> [, ... <title>Notes</title> <para> + Because <productname>PostgreSQL</productname> does not require constraint + names to be unique within a schema (but only per-table), it is possible + that there is more than one match for a specified constraint name. + In this case <command>SET CONSTRAINTS</command> will act on all matches. + For a non-schema-qualified name, once a match or matches have been found in + some schema in the search path, schemas appearing later in the path are not + searched. + </para> + + <para> This command only alters the behavior of constraints within the current transaction. Thus, if you execute this command outside of a transaction block @@ -100,8 +112,11 @@ SET CONSTRAINTS { ALL | <replaceable class="parameter">name</replaceable> [, ... <para> This command complies with the behavior defined in the SQL standard, except for the limitation that, in - <productname>PostgreSQL</productname>, it only applies to - foreign-key and uniqueness constraints. + <productname>PostgreSQL</productname>, it does not apply to + <literal>NOT NULL</> and <literal>CHECK</> constraints. + Also, <productname>PostgreSQL</productname> checks non-deferrable + uniqueness constraints immediately, not at end of statement as the + standard would suggest. </para> </refsect1> |