-<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.44 2005/08/13 01:55:41 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/ddl.sgml,v 1.45 2005/10/23 19:29:49 tgl Exp $ -->
<chapter id="ddl">
<title>Data Definition</title>
in a table. For many applications, however, the constraint they
provide is too coarse. For example, a column containing a product
price should probably only accept positive values. But there is no
- data type that accepts only positive numbers. Another issue is
+ standard data type that accepts only positive numbers. Another issue is
that you might want to constrain column data with respect to other
columns or rows. For example, in a table containing product
information, there should only be one row for each product number.
IS NOT NULL)</literal>, but in
<productname>PostgreSQL</productname> creating an explicit
not-null constraint is more efficient. The drawback is that you
- cannot give explicit names to not-null constraints created that
+ cannot give explicit names to not-null constraints created this
way.
</para>
columns included in the constraint are equal.
However, null values are not considered equal in this
comparison. That means even in the presence of a
- unique constraint it is possible to store an unlimited number of
+ unique constraint it is possible to store duplicate
rows that contain a null value in at least one of the constrained
columns. This behavior conforms to the SQL standard, but we have
heard that other SQL databases may not follow this rule. So be
<!--
-$PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.103 2005/08/14 22:19:50 petere Exp $
+$PostgreSQL: pgsql/doc/src/sgml/syntax.sgml,v 1.104 2005/10/23 19:29:49 tgl Exp $
-->
<chapter id="sql-syntax">
<literal>\n</literal> is a newline, <literal>\r</literal> is a
carriage return, <literal>\t</literal> is a tab. Also supported is
<literal>\<replaceable>digits</replaceable></literal>, where
- <replaceable>ddd</replaceable> represents an octal byte value, and
+ <replaceable>digits</replaceable> represents an octal byte value, and
<literal>\x<replaceable>hexdigits</replaceable></literal>, where
<replaceable>hexdigits</replaceable> represents a hexadecimal byte value.
(It is your responsibility that the byte sequences you create are
is that it does not work for array types; use <literal>::</literal>
or <literal>CAST()</literal> to specify the type of an array constant.
</para>
+
+ <para>
+ The <literal>CAST()</> syntax conforms to SQL. The
+ <literal><replaceable>type</replaceable> '<replaceable>string</replaceable>'</literal>
+ syntax is a generalization of the standard: SQL specifies this syntax only
+ for a few datatypes, but <productname>PostgreSQL</productname> allows it
+ for all types. The syntax with
+ <literal>::</literal> is historical <productname>PostgreSQL</productname>
+ usage, as is the function-call syntax.
+ </para>
</sect3>
</sect2>
LANGUAGE SQL;
</programlisting>
- Here the <literal>$1</literal> will be replaced by the first
- function argument when the function is invoked.
+ Here the <literal>$1</literal> references the value of the first
+ function argument whenever the function is invoked.
</para>
</sect2>