Thanks for your remarks and advices, and of course for your help to rewrite the text. So, it is now included in the new version attached. I hope it will be ok this time.
Patrick Francelle On 10/30/18 17:14, David G. Johnston wrote: > The product name, when used in the documentation, is "PostgreSQL" with > appropriate html elements surrounding it. > > Some parts that look or read oddly to me: > "you may expect troubles" > Use - if possible - (commas, not hypens, are customary here) > "does not currently" - drop "currently", it doesn't and we don't need > to predict the future (same goes for "are currently meant") > "therefore we recommend to avoid them" - they are unsupported, the > implied recommended is to not use them period, not avoid them if > possible. Better to say that it isn't enforced even though it is > unsupported. > > An alternative to consider as one the whole the reading of the v4 > patch just feels off and different than the rest of that section of > the documentation. > > PostgreSQL does not support writing CHECK constraints that reference > tables (though it does not reliably prevent one from doing so). While > normal operations are likely to succeed even if you violate this rule > it is probable that a database restoration will fail. Use FOREIGN KEY > constraints or custom triggers for cross-table validations. For rows > on the same table you should use UNIQUE or EXCLUDE constraints when > applicable, or a custom trigger otherwise. > > David J. >
diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index b5ed1b7939..142918e2b1 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -403,6 +403,20 @@ CREATE TABLE products ( ensure that a column does not contain null values, the not-null constraint described in the next section can be used. </para> + + <note> + <para> + <productname>PostgreSQL</productname> does not support writing + <literal>CHECK</literal> constraints that reference tables (though it does + not reliably prevent one from doing so). While normal operations are + likely to succeed even if you violate this rule, it is probable that a + database restoration will fail. Use <literal>FOREIGN KEY</literal> + constraints or custom <link linkend="triggers">triggers</link> for + cross-table validations. For rows on the same table you should use + <literal>UNIQUE</literal> or <literal>EXCLUDE</literal> constraints when + applicable, or a custom trigger otherwise. + </para> + </note> </sect2> <sect2>