diff options
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/catalogs.sgml | 10 | ||||
-rw-r--r-- | doc/src/sgml/information_schema.sgml | 4 | ||||
-rw-r--r-- | doc/src/sgml/ref/alter_table.sgml | 12 | ||||
-rw-r--r-- | doc/src/sgml/ref/create_foreign_table.sgml | 6 | ||||
-rw-r--r-- | doc/src/sgml/ref/create_table.sgml | 34 |
5 files changed, 54 insertions, 12 deletions
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index cc6cf9bef09..238ed679190 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -2593,6 +2593,16 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l <row> <entry role="catalog_table_entry"><para role="column_definition"> + <structfield>conenforced</structfield> <type>bool</type> + </para> + <para> + Is the constraint enforced? + Currently, can be false only for CHECK constraints + </para></entry> + </row> + + <row> + <entry role="catalog_table_entry"><para role="column_definition"> <structfield>convalidated</structfield> <type>bool</type> </para> <para> diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index 9442b0718c0..19dffe7be6a 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -6896,9 +6896,7 @@ ORDER BY c.ordinal_position; <structfield>enforced</structfield> <type>yes_or_no</type> </para> <para> - Applies to a feature not available in - <productname>PostgreSQL</productname> (currently always - <literal>YES</literal>) + <literal>YES</literal> if the constraint is enforced, <literal>NO</literal> if not </para></entry> </row> diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index c8f7ab7d956..938450fba18 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -108,7 +108,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM PRIMARY KEY <replaceable class="parameter">index_parameters</replaceable> | REFERENCES <replaceable class="parameter">reftable</replaceable> [ ( <replaceable class="parameter">refcolumn</replaceable> ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE <replaceable class="parameter">referential_action</replaceable> ] [ ON UPDATE <replaceable class="parameter">referential_action</replaceable> ] } -[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] +[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">table_constraint</replaceable> is:</phrase> @@ -120,7 +120,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM EXCLUDE [ USING <replaceable class="parameter">index_method</replaceable> ] ( <replaceable class="parameter">exclude_element</replaceable> WITH <replaceable class="parameter">operator</replaceable> [, ... ] ) <replaceable class="parameter">index_parameters</replaceable> [ WHERE ( <replaceable class="parameter">predicate</replaceable> ) ] | FOREIGN KEY ( <replaceable class="parameter">column_name</replaceable> [, ... ] [, PERIOD <replaceable class="parameter">column_name</replaceable> ] ) REFERENCES <replaceable class="parameter">reftable</replaceable> [ ( <replaceable class="parameter">refcolumn</replaceable> [, ... ] [, PERIOD <replaceable class="parameter">refcolumn</replaceable> ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE <replaceable class="parameter">referential_action</replaceable> ] [ ON UPDATE <replaceable class="parameter">referential_action</replaceable> ] } -[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] +[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">table_constraint_using_index</replaceable> is:</phrase> @@ -1423,9 +1423,11 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM </para> <para> - Adding a <literal>CHECK</literal> or <literal>NOT NULL</literal> constraint requires - scanning the table to verify that existing rows meet the constraint, - but does not require a table rewrite. + Adding an enforced <literal>CHECK</literal> or <literal>NOT NULL</literal> + constraint requires scanning the table to verify that existing rows meet the + constraint, but does not require a table rewrite. If a <literal>CHECK</literal> + constraint is added as <literal>NOT ENFORCED</literal>, the validation will + not be performed. </para> <para> diff --git a/doc/src/sgml/ref/create_foreign_table.sgml b/doc/src/sgml/ref/create_foreign_table.sgml index fc81ba3c498..0dcd9ca6f87 100644 --- a/doc/src/sgml/ref/create_foreign_table.sgml +++ b/doc/src/sgml/ref/create_foreign_table.sgml @@ -48,12 +48,14 @@ CREATE FOREIGN TABLE [ IF NOT EXISTS ] <replaceable class="parameter">table_name CHECK ( <replaceable class="parameter">expression</replaceable> ) [ NO INHERIT ] | DEFAULT <replaceable>default_expr</replaceable> | GENERATED ALWAYS AS ( <replaceable>generation_expr</replaceable> ) STORED } +[ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">table_constraint</replaceable> is:</phrase> [ CONSTRAINT <replaceable class="parameter">constraint_name</replaceable> ] - NOT NULL <replaceable class="parameter">column_name</replaceable> [ NO INHERIT ] | -CHECK ( <replaceable class="parameter">expression</replaceable> ) [ NO INHERIT ] +{ NOT NULL <replaceable class="parameter">column_name</replaceable> [ NO INHERIT ] | + CHECK ( <replaceable class="parameter">expression</replaceable> ) [ NO INHERIT ] } +[ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">partition_bound_spec</replaceable> is:</phrase> diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 70fa929caa4..2237321cb4f 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -71,7 +71,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI PRIMARY KEY <replaceable class="parameter">index_parameters</replaceable> | REFERENCES <replaceable class="parameter">reftable</replaceable> [ ( <replaceable class="parameter">refcolumn</replaceable> ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE <replaceable class="parameter">referential_action</replaceable> ] [ ON UPDATE <replaceable class="parameter">referential_action</replaceable> ] } -[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] +[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">table_constraint</replaceable> is:</phrase> @@ -84,7 +84,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI FOREIGN KEY ( <replaceable class="parameter">column_name</replaceable> [, ... ] [, PERIOD <replaceable class="parameter">column_name</replaceable> ] ) REFERENCES <replaceable class="parameter">reftable</replaceable> [ ( <replaceable class="parameter">refcolumn</replaceable> [, ... ] [, PERIOD <replaceable class="parameter">refcolumn</replaceable> ] ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE <replaceable class="parameter">referential_action</replaceable> ] [ ON UPDATE <replaceable class="parameter">referential_action</replaceable> ] } -[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] +[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ] <phrase>and <replaceable class="parameter">like_option</replaceable> is:</phrase> @@ -1377,6 +1377,36 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM </listitem> </varlistentry> + <varlistentry id="sql-createtable-parms-enforced"> + <term><literal>ENFORCED</literal></term> + <term><literal>NOT ENFORCED</literal></term> + <listitem> + <para> + When the constraint is <literal>ENFORCED</literal>, then the database + system will ensure that the constraint is satisfied, by checking the + constraint at appropriate times (after each statement or at the end of + the transaction, as appropriate). That is the default. If the + constraint is <literal>NOT ENFORCED</literal>, the database system will + not check the constraint. It is then up to the application code to + ensure that the constraints are satisfied. The database system might + still assume that the data actually satisfies the constraint for + optimization decisions where this does not affect the correctness of the + result. + </para> + + <para> + <literal>NOT ENFORCED</literal> constraints can be useful as + documentation if the actual checking of the constraint at run time is + too expensive. + </para> + + <para> + This is currently only supported for <literal>CHECK</literal> + constraints. + </para> + </listitem> + </varlistentry> + <varlistentry id="sql-createtable-method"> <term><literal>USING <replaceable class="parameter">method</replaceable></literal></term> <listitem> |