diff options
-rw-r--r-- | doc/src/sgml/ref/create_table.sgml | 58 |
1 files changed, 36 insertions, 22 deletions
diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index bc59a2d77dd..569f4c9da7b 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -878,15 +878,17 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM <varlistentry> <term><literal>UNIQUE</literal> (column constraint)</term> <term><literal>UNIQUE ( <replaceable class="parameter">column_name</replaceable> [, ... ] )</literal> - <optional> INCLUDE ( <replaceable class="parameter">column_name</replaceable> [, ...]) </optional> (table constraint)</term> + <optional> <literal>INCLUDE ( <replaceable class="parameter">column_name</replaceable> [, ...])</literal> </optional> (table constraint)</term> <listitem> <para> The <literal>UNIQUE</literal> constraint specifies that a group of one or more columns of a table can contain - only unique values. The behavior of the unique table constraint - is the same as that for column constraints, with the additional - capability to span multiple columns. + only unique values. The behavior of a unique table constraint + is the same as that of a unique column constraint, with the + additional capability to span multiple columns. The constraint + therefore enforces that any two rows must differ in at least one + of these columns. </para> <para> @@ -895,10 +897,10 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM </para> <para> - Each unique table constraint must name a set of columns that is + Each unique constraint should name a set of columns that is different from the set of columns named by any other unique or - primary key constraint defined for the table. (Otherwise it - would just be the same constraint listed twice.) + primary key constraint defined for the table. (Otherwise, redundant + unique constraints will be discarded.) </para> <para> @@ -911,10 +913,15 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM <para> Adding a unique constraint will automatically create a unique btree index on the column or group of columns used in the constraint. - The optional clause <literal>INCLUDE</literal> adds to that index - one or more columns on which the uniqueness is not enforced. - Note that although the constraint is not enforced on the included columns, - it still depends on them. Consequently, some operations on these columns + </para> + + <para> + The optional <literal>INCLUDE</literal> clause adds to that index + one or more columns that are simply <quote>payload</quote>: uniqueness + is not enforced on them, and the index cannot be searched on the basis + of those columns. However they can be retrieved by an index-only scan. + Note that although the constraint is not enforced on included columns, + it still depends on them. Consequently, some operations on such columns (e.g., <literal>DROP COLUMN</literal>) can cause cascaded constraint and index deletion. </para> @@ -924,7 +931,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM <varlistentry> <term><literal>PRIMARY KEY</literal> (column constraint)</term> <term><literal>PRIMARY KEY ( <replaceable class="parameter">column_name</replaceable> [, ... ] )</literal> - <optional> INCLUDE ( <replaceable class="parameter">column_name</replaceable> [, ...]) </optional> (table constraint)</term> + <optional> <literal>INCLUDE ( <replaceable class="parameter">column_name</replaceable> [, ...])</literal> </optional> (table constraint)</term> <listitem> <para> The <literal>PRIMARY KEY</literal> constraint specifies that a column or @@ -942,27 +949,34 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM <para> <literal>PRIMARY KEY</literal> enforces the same data constraints as - a combination of <literal>UNIQUE</literal> and <literal>NOT NULL</literal>, but + a combination of <literal>UNIQUE</literal> and <literal>NOT + NULL</literal>. However, identifying a set of columns as the primary key also provides metadata about the design of the schema, since a primary key implies that other tables can rely on this set of columns as a unique identifier for rows. </para> <para> - <literal>PRIMARY KEY</literal> constraints share the restrictions that - <literal>UNIQUE</literal> constraints have when placed on partitioned - tables. + When placed on a partitioned table, <literal>PRIMARY KEY</literal> + constraints share the restrictions previously decribed + for <literal>UNIQUE</literal> constraints. </para> <para> Adding a <literal>PRIMARY KEY</literal> constraint will automatically create a unique btree index on the column or group of columns used in the - constraint. The optional <literal>INCLUDE</literal> clause allows a list - of columns to be specified which will be included in the non-key portion - of the index. Although uniqueness is not enforced on the included columns, - the constraint still depends on them. Consequently, some operations on the - included columns (e.g., <literal>DROP COLUMN</literal>) can cause cascaded - constraint and index deletion. + constraint. + </para> + + <para> + The optional <literal>INCLUDE</literal> clause adds to that index + one or more columns that are simply <quote>payload</quote>: uniqueness + is not enforced on them, and the index cannot be searched on the basis + of those columns. However they can be retrieved by an index-only scan. + Note that although the constraint is not enforced on included columns, + it still depends on them. Consequently, some operations on such columns + (e.g., <literal>DROP COLUMN</literal>) can cause cascaded constraint and + index deletion. </para> </listitem> </varlistentry> |