mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +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:
87
doc/dominfo.txt
Normal file
87
doc/dominfo.txt
Normal file
@ -0,0 +1,87 @@
|
||||
|
||||
|
||||
-- Test Comment / Drop
|
||||
create domain domaindroptest int4;
|
||||
comment on domain domaindroptest is 'About to drop this..';
|
||||
|
||||
select * from pg_type where typname = 'domaindroptest';
|
||||
|
||||
drop domain domaindroptest restrict;
|
||||
|
||||
select * from pg_type where typname = 'domaindroptest';
|
||||
|
||||
-- TEST Domains.
|
||||
|
||||
create domain domainvarchar varchar(5);
|
||||
create domain domainnumeric numeric(8,2);
|
||||
create domain domainint4 int4;
|
||||
create domain domaintext text;
|
||||
|
||||
|
||||
-- Test tables using domains
|
||||
create table basictest
|
||||
( testint4 domainint4
|
||||
, testtext domaintext
|
||||
, testvarchar domainvarchar
|
||||
, testnumeric domainnumeric
|
||||
);
|
||||
|
||||
INSERT INTO basictest values ('88', 'haha', 'short', '123.12'); -- Good
|
||||
INSERT INTO basictest values ('88', 'haha', 'short text', '123.12'); -- Bad varchar
|
||||
INSERT INTO basictest values ('88', 'haha', 'short', '123.1212'); -- Truncate numeric
|
||||
select * from basictest;
|
||||
|
||||
|
||||
-- Array Test
|
||||
create domain domainint4arr int4[1];
|
||||
create domain domaintextarr text[2][3];
|
||||
|
||||
create table arrtest
|
||||
( testint4arr domainint4arr
|
||||
, testtextarr domaintextarr
|
||||
);
|
||||
INSERT INTO arrtest values ('{2,2}', '{{"a","b"}{"c","d"}}');
|
||||
INSERT INTO arrtest values ('{{2,2}{2,2}}', '{{"a","b"}}');
|
||||
INSERT INTO arrtest values ('{2,2}', '{{"a","b"}{"c","d"}{"e"}}');
|
||||
INSERT INTO arrtest values ('{2,2}', '{{"a"}{"c"}}');
|
||||
INSERT INTO arrtest values (NULL, '{{"a","b"}{"c","d","e"}}');
|
||||
|
||||
|
||||
create domain dnotnull varchar(15) NOT NULL;
|
||||
create domain dnull varchar(15) NULL;
|
||||
|
||||
create table nulltest
|
||||
( col1 dnotnull
|
||||
, col2 dnotnull NULL -- NOT NULL in the domain cannot be overridden
|
||||
, col3 dnull NOT NULL
|
||||
, col4 dnull
|
||||
);
|
||||
INSERT INTO nulltest DEFAULT VALUES;
|
||||
INSERT INTO nulltest values ('a', 'b', 'c', 'd'); -- Good
|
||||
INSERT INTO nulltest values (NULL, 'b', 'c', 'd');
|
||||
INSERT INTO nulltest values ('a', NULL, 'c', 'd');
|
||||
INSERT INTO nulltest values ('a', 'b', NULL, 'd');
|
||||
INSERT INTO nulltest values ('a', 'b', 'c', NULL); -- Good
|
||||
select * from nulltest;
|
||||
|
||||
|
||||
create domain ddef1 int4 DEFAULT 3;
|
||||
create domain ddef2 numeric(8,6) DEFAULT '1234.123456789';
|
||||
-- Type mixing, function returns int8
|
||||
create domain ddef3 text DEFAULT 5;
|
||||
create sequence ddef4_seq;
|
||||
create domain ddef4 int4 DEFAULT nextval(cast('ddef4_seq' as text));
|
||||
|
||||
create table defaulttest
|
||||
( col1 ddef1
|
||||
, col2 ddef2
|
||||
, col3 ddef3
|
||||
, col4 ddef4
|
||||
, col5 ddef1 NOT NULL DEFAULT NULL
|
||||
, col6 ddef2 DEFAULT '88.1'
|
||||
, col7 ddef4 DEFAULT 8000
|
||||
);
|
||||
insert into defaulttest default values;
|
||||
insert into defaulttest default values;
|
||||
insert into defaulttest default values;
|
||||
select * from defaulttest;
|
@ -1,6 +1,6 @@
|
||||
<!--
|
||||
Documentation of the system catalogs, directed toward PostgreSQL developers
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.31 2002/03/01 22:45:03 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.32 2002/03/06 20:34:43 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="catalogs">
|
||||
@ -2510,6 +2510,53 @@
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>typbasetype</entry>
|
||||
<entry><type>oid</type></entry>
|
||||
<entry></entry>
|
||||
<entry><para>
|
||||
<structfield>typbasetype</structfield> is the type that this one is based
|
||||
off of. Normally references the domains parent type, and is 0 otherwise.
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>typnotnull</entry>
|
||||
<entry><type>boolean</type></entry>
|
||||
<entry></entry>
|
||||
<entry><para>
|
||||
<structfield>typnotnull</structfield> represents a NOT NULL
|
||||
constraint on a type. Normally used only for domains.
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>typmod</entry>
|
||||
<entry><type>integer</type></entry>
|
||||
<entry></entry>
|
||||
<entry><para>
|
||||
<structfield>typmod</structfield> records type-specific data
|
||||
supplied at table creation time (for example, the maximum
|
||||
length of a <type>varchar</type> column). It is passed to
|
||||
type-specific input and output functions as the third
|
||||
argument. The value will generally be -1 for types that do not
|
||||
need typmod. This data is copied to
|
||||
<structfield>pg_attribute.atttypmod</structfield> on creation
|
||||
of a table using a domain as it's field type.
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>typdefaultbin</entry>
|
||||
<entry><type>text</type></entry>
|
||||
<entry></entry>
|
||||
<entry><para>
|
||||
<structfield>typdefaultbin</structfield> is NULL for types without a
|
||||
default value. If it's not NULL, it contains the internal string
|
||||
representation of the default expression node.
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>typdefault</entry>
|
||||
<entry><type>text</type></entry>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.33 2002/03/01 22:45:07 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.34 2002/03/06 20:34:44 momjian Exp $
|
||||
PostgreSQL documentation
|
||||
Complete list of usable sgml source files in this directory.
|
||||
-->
|
||||
@ -52,6 +52,7 @@ Complete list of usable sgml source files in this directory.
|
||||
<!entity createAggregate system "create_aggregate.sgml">
|
||||
<!entity createConstraint system "create_constraint.sgml">
|
||||
<!entity createDatabase system "create_database.sgml">
|
||||
<!entity createDomain system "create_domain.sgml">
|
||||
<!entity createFunction system "create_function.sgml">
|
||||
<!entity createGroup system "create_group.sgml">
|
||||
<!entity createIndex system "create_index.sgml">
|
||||
@ -69,6 +70,7 @@ Complete list of usable sgml source files in this directory.
|
||||
<!entity delete system "delete.sgml">
|
||||
<!entity dropAggregate system "drop_aggregate.sgml">
|
||||
<!entity dropDatabase system "drop_database.sgml">
|
||||
<!entity dropDomain system "drop_domain.sgml">
|
||||
<!entity dropFunction system "drop_function.sgml">
|
||||
<!entity dropGroup system "drop_group.sgml">
|
||||
<!entity dropIndex system "drop_index.sgml">
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/comment.sgml,v 1.12 2001/12/27 21:36:57 tgl Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/comment.sgml,v 1.13 2002/03/06 20:34:44 momjian Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
@ -25,7 +25,7 @@ PostgreSQL documentation
|
||||
<synopsis>
|
||||
COMMENT ON
|
||||
[
|
||||
[ DATABASE | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ] <replaceable class="PARAMETER">object_name</replaceable> |
|
||||
[ DATABASE | DOMAIN | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ] <replaceable class="PARAMETER">object_name</replaceable> |
|
||||
COLUMN <replaceable class="PARAMETER">table_name</replaceable>.<replaceable class="PARAMETER">column_name</replaceable> |
|
||||
AGGREGATE <replaceable class="PARAMETER">agg_name</replaceable> (<replaceable class="PARAMETER">agg_type</replaceable>) |
|
||||
FUNCTION <replaceable class="PARAMETER">func_name</replaceable> (<replaceable class="PARAMETER">arg1</replaceable>, <replaceable class="PARAMETER">arg2</replaceable>, ...) |
|
||||
@ -33,7 +33,7 @@ COMMENT ON
|
||||
TRIGGER <replaceable class="PARAMETER">trigger_name</replaceable> ON <replaceable class="PARAMETER">table_name</replaceable>
|
||||
] IS <replaceable class="PARAMETER">'text'</replaceable>
|
||||
</synopsis>
|
||||
|
||||
|
||||
<refsect2 id="R2-SQL-COMMENT-1">
|
||||
<refsect2info>
|
||||
<date>1999-10-25</date>
|
||||
@ -64,7 +64,7 @@ COMMENT ON
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
|
||||
<refsect2 id="R2-SQL-COMMENT-2">
|
||||
<refsect2info>
|
||||
<date>1998-09-08</date>
|
||||
@ -99,7 +99,7 @@ COMMENT
|
||||
</title>
|
||||
<para>
|
||||
<command>COMMENT</command> stores a comment about a database object.
|
||||
Comments can be
|
||||
Comments can be
|
||||
easily retrieved with <command>psql</command>'s
|
||||
<command>\dd</command>, <command>\d+</command>, or <command>\l+</command>
|
||||
commands. Other user interfaces to retrieve comments can be built atop
|
||||
@ -141,6 +141,7 @@ COMMENT ON mytable IS 'This is my table.';
|
||||
|
||||
<programlisting>
|
||||
COMMENT ON DATABASE my_database IS 'Development Database';
|
||||
COMMENT ON DOMAIN my_domain IS 'Domains are like abstracted fields';
|
||||
COMMENT ON INDEX my_index IS 'Enforces uniqueness on employee id';
|
||||
COMMENT ON RULE my_rule IS 'Logs UPDATES of employee records';
|
||||
COMMENT ON SEQUENCE my_sequence IS 'Used to generate primary keys';
|
||||
@ -155,12 +156,12 @@ COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for R.I.';
|
||||
</programlisting>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
||||
<refsect1 id="R1-SQL-COMMENT-3">
|
||||
<title>
|
||||
Compatibility
|
||||
</title>
|
||||
|
||||
|
||||
<refsect2 id="R2-SQL-COMMENT-4">
|
||||
<refsect2info>
|
||||
<date>1998-09-08</date>
|
||||
|
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:
|
||||
-->
|
167
doc/src/sgml/ref/drop_domain.sgml
Normal file
167
doc/src/sgml/ref/drop_domain.sgml
Normal file
@ -0,0 +1,167 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_domain.sgml,v 1.1 2002/03/06 20:34:44 momjian Exp $
|
||||
PostgreSQL documentation
|
||||
-->
|
||||
|
||||
<refentry id="SQL-DROPDOMAIN">
|
||||
<refmeta>
|
||||
<refentrytitle id="SQL-DROPDOMAIN-TITLE">
|
||||
DROP DOMAIN
|
||||
</refentrytitle>
|
||||
<refmiscinfo>SQL - Language Statements</refmiscinfo>
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname>
|
||||
DROP DOMAIN
|
||||
</refname>
|
||||
<refpurpose>
|
||||
remove a user-defined domain
|
||||
</refpurpose>
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<refsynopsisdivinfo>
|
||||
<date>1999-07-20</date>
|
||||
</refsynopsisdivinfo>
|
||||
<synopsis>
|
||||
DROP DOMAIN <replaceable class="PARAMETER">domainname</replaceable> [, ...]
|
||||
</synopsis>
|
||||
|
||||
<refsect2 id="R2-SQL-DROPDOMAIN-1">
|
||||
<refsect2info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect2info>
|
||||
<title>
|
||||
Inputs
|
||||
</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><replaceable class="PARAMETER">domainname</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The name of an existing domain.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-SQL-DROPDOMAIN-2">
|
||||
<refsect2info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect2info>
|
||||
<title>
|
||||
Outputs
|
||||
</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><computeroutput>
|
||||
DROP
|
||||
</computeroutput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
The message returned if the command is successful.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><computeroutput>
|
||||
ERROR: RemoveDomain: type '<replaceable class="parameter">domainname</replaceable>' does not exist
|
||||
</computeroutput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This message occurs if the specified domain (or type) is not found.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1 id="R1-SQL-DROPDOMAIN-1">
|
||||
<refsect1info>
|
||||
<date>2002-02-24</date>
|
||||
</refsect1info>
|
||||
<title>
|
||||
Description
|
||||
</title>
|
||||
<para>
|
||||
<command>DROP DOMAIN</command> will remove a user domain from the
|
||||
system catalogs.
|
||||
</para>
|
||||
<para>
|
||||
Only the owner of a domain can remove it.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-DROPDOMAIN-notes">
|
||||
<title>Notes</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
It is the user's responsibility to remove any operators,
|
||||
functions, aggregates, access methods, and tables that
|
||||
use a deleted domain.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-DROPDOMAIN-examples">
|
||||
<title>Examples</title>
|
||||
<para>
|
||||
To remove the <type>box</type> domain:
|
||||
|
||||
<programlisting>
|
||||
DROP DOMAIN box RESTRICT;
|
||||
</programlisting>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-DROPDOMAIN-compatibility">
|
||||
<title>Compatibility</title>
|
||||
|
||||
<para>
|
||||
A <command>DROP DOMAIN</command> statement exists in SQL99. As with
|
||||
most other <quote>drop</quote> commands, <command>DROP
|
||||
DOMAIN</command> in SQL99 requires a <quote>drop behavior</quote>
|
||||
clause to select between dropping all dependent objects or refusing
|
||||
to drop if dependent objects exist:
|
||||
<synopsis>
|
||||
DROP DOMAIN <replaceable>name</replaceable> { CASCADE | RESTRICT }
|
||||
</synopsis>
|
||||
<productname>PostgreSQL</productname> enforces the existance of
|
||||
RESTRICT or CASCADE but ignores their enforcement against the
|
||||
system tables.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="SQL-DROPDOMAIN-see-also">
|
||||
<title>See Also</title>
|
||||
|
||||
<simplelist type="inline">
|
||||
<member><xref linkend="sql-createdomain"></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:
|
||||
-->
|
@ -1,5 +1,5 @@
|
||||
<!-- reference.sgml
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/reference.sgml,v 1.21 2002/03/01 22:45:04 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/reference.sgml,v 1.22 2002/03/06 20:34:43 momjian Exp $
|
||||
|
||||
PostgreSQL Reference Manual
|
||||
-->
|
||||
@ -61,6 +61,7 @@ PostgreSQL Reference Manual
|
||||
&createAggregate;
|
||||
&createConstraint;
|
||||
&createDatabase;
|
||||
&createDomain;
|
||||
&createFunction;
|
||||
&createGroup;
|
||||
&createIndex;
|
||||
@ -78,6 +79,7 @@ PostgreSQL Reference Manual
|
||||
&delete;
|
||||
&dropAggregate;
|
||||
&dropDatabase;
|
||||
&dropDomain;
|
||||
&dropFunction;
|
||||
&dropGroup;
|
||||
&dropIndex;
|
||||
@ -115,7 +117,7 @@ PostgreSQL Reference Manual
|
||||
&unlisten;
|
||||
&update;
|
||||
&vacuum;
|
||||
|
||||
|
||||
</reference>
|
||||
|
||||
<!--
|
||||
|
Reference in New Issue
Block a user