mirror of
https://github.com/postgres/postgres.git
synced 2025-12-18 05:01:01 +03:00
Ok. Updated patch attached.
- domain.patch -> source patch against pgsql in cvs - drop_domain.sgml and create_domain.sgml -> New doc/src/sgml/ref docs - dominfo.txt -> basic domain related queries I used for testing [ ADDED TO /doc] Enables domains of array elements -> CREATE DOMAIN dom int4[3][2]; Uses a typbasetype column to describe the origin of the domain. Copies data to attnotnull rather than processing in execMain(). Some documentation differences from earlier. If this is approved, I'll start working on pg_dump, and a \dD <domain> option in psql, and regression tests. I don't really feel like doing those until the system table structure settles for pg_type. CHECKS when added, will also be copied to to the table attributes. FK Constraints (if I ever figure out how) will be done similarly. Both will lbe handled by MergeDomainAttributes() which is called shortly before MergeAttributes(). Rod Taylor
This commit is contained in:
231
doc/src/sgml/ref/create_domain.sgml
Normal file
231
doc/src/sgml/ref/create_domain.sgml
Normal file
@@ -0,0 +1,231 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_domain.sgml,v 1.1 2002/03/06 20:34:44 momjian Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
<refentry id="SQL-CREATEDOMAIN">
|
||||
<refmeta>
|
||||
<refentrytitle id="sql-createdomian-title">
|
||||
CREATE DOMAIN
|
||||
</refentrytitle>
|
||||
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>
|
||||
CREATE DOMAIN
|
||||
</refname>
|
||||
<refpurpose>
|
||||
define a new domain
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<refsynopsisdivinfo>
|
||||
<date>2002-02-24</date>
|
||||
</refsynopsisdivinfo>
|
||||
<synopsis>
|
||||
CREATE DOMAIN <replaceable class="parameter">domainname</replaceable> <replaceable class="parameter">data_type</replaceable> [ DEFAULT <replaceable>default_expr</> ] [ <replaceable class="PARAMETER">column_constraint</replaceable> [, ... ] ]
|
||||
[ CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable> ]
|
||||
{ NOT NULL | NULL <!-- | UNIQUE | PRIMARY KEY |
|
||||
CHECK (<replaceable class="PARAMETER">expression</replaceable>) |
|
||||
REFERENCES <replaceable class="PARAMETER">reftable</replaceable> [ ( <replaceable class="PARAMETER">refcolumn</replaceable> ) ] [ MATCH FULL | MATCH PARTIAL ]
|
||||
[ ON DELETE <replaceable class="parameter">action</replaceable> ] [ ON UPDATE <replaceable class="parameter">action</replaceable> ] --> }
|
||||
<!-- [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] -->
|
||||
</synopsis>
|
||||
|
||||
<refsect2 id="R2-SQL-CREATEDOMAIN-1">
|
||||
<refsect2info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect2info>
|
||||
<title>
|
||||
Parameters
|
||||
</title>
|
||||
<para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><replaceable class="parameter">domainname</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The name of a domain to be created.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><replaceable class="PARAMETER">data_type</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The data type of the domain. This may include array specifiers.
|
||||
Refer to the <citetitle>User's Guide</citetitle> for further
|
||||
information about data types and arrays.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>DEFAULT
|
||||
<replaceable>default_expr</replaceable></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>DEFAULT</> clause assigns a default data value for
|
||||
the column whose column definition it appears within. The value
|
||||
is any variable-free expression (subselects and cross-references
|
||||
to other columns in the current table are not allowed). The
|
||||
data type of the default expression must match the data type of the
|
||||
domain.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The default expression will be used in any insert operation that
|
||||
does not specify a value for the domain. If there is no default
|
||||
for a domain, then the default is NULL.
|
||||
</para>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
The default of a column will be tested before that of the domain.
|
||||
</para>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable></literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
An optional name for a domain. If not specified,
|
||||
the system generates a name.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>NOT NULL</></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The column is not allowed to contain NULL values. This is
|
||||
equivalent to the column constraint <literal>CHECK (<replaceable
|
||||
class="PARAMETER">column</replaceable> NOT NULL)</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>NULL</></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The column is allowed to contain NULL values. This is the default.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This clause is only available for compatibility with
|
||||
non-standard SQL databases. Its use is discouraged in new
|
||||
applications.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-SQL-CREATEDOMAIN-2">
|
||||
<refsect2info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect2info>
|
||||
<title>
|
||||
Outputs
|
||||
</title>
|
||||
<para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><computeroutput>
|
||||
CREATE DOMAIN
|
||||
</computeroutput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Message returned if the domain is successfully created.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1 id="R1-SQL-CREATEDOMAIN-1">
|
||||
<refsect1info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect1info>
|
||||
<title>
|
||||
Description
|
||||
</title>
|
||||
|
||||
<para>
|
||||
<command>CREATE DOMAIN</command> allows the user to register a new user data
|
||||
domain with PostgreSQL for use in the current data base. The
|
||||
user who defines a domain becomes its owner.
|
||||
<replaceable class="parameter">domainname</replaceable> is
|
||||
the name of the new type and must be unique within the
|
||||
types and domains defined for this database.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Domains are useful for abstracting common fields between tables into
|
||||
a single location for maintenance. An email address column may be used
|
||||
in several tables, all with the same properties. Define a domain and
|
||||
use that rather than setting up each tables constraints individually.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
<para>
|
||||
This example creates the <type>country_code</type> data type and then uses the
|
||||
type in a table definition:
|
||||
<programlisting>
|
||||
CREATE DOMAIN country_code char(2) NOT NULL;
|
||||
CREATE TABLE countrylist (id INT4, country country_code);
|
||||
</programlisting>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-CREATEDOMAIN-compatibility">
|
||||
<title>Compatibility</title>
|
||||
|
||||
<para>
|
||||
This <command>CREATE DOMAIN</command> command is a
|
||||
<productname>PostgreSQL</productname> extension. CHECK and FOREIGN KEY
|
||||
constraints are currently unsupported.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-CREATEDOMAIN-see-also">
|
||||
<title>See Also</title>
|
||||
|
||||
<simplelist type="inline">
|
||||
<member><xref linkend="sql-dropdomain"></member>
|
||||
<member><citetitle>PostgreSQL Programmer's Guide</citetitle></member>
|
||||
</simplelist>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
|
||||
<!-- Keep this comment at the end of the file
|
||||
Local variables:
|
||||
mode: sgml
|
||||
sgml-omittag:nil
|
||||
sgml-shorttag:t
|
||||
sgml-minimize-attributes:nil
|
||||
sgml-always-quote-attributes:t
|
||||
sgml-indent-step:1
|
||||
sgml-indent-data:t
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"../reference.ced"
|
||||
sgml-exposed-tags:nil
|
||||
sgml-local-catalogs:"/usr/lib/sgml/catalog"
|
||||
sgml-local-ecat-files:nil
|
||||
End:
|
||||
-->
|
||||
Reference in New Issue
Block a user