mirror of https://github.com/postgres/postgres
parent
609f71b760
commit
b976b8af80
@ -1,87 +0,0 @@ |
|||||||
|
|
||||||
|
|
||||||
-- 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,231 +0,0 @@ |
|||||||
<!-- |
|
||||||
$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: |
|
||||||
--> |
|
@ -1,167 +0,0 @@ |
|||||||
<!-- |
|
||||||
$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: |
|
||||||
--> |
|
Loading…
Reference in new issue