--- /dev/null
+
+
+-- 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;
+ |
+ typbasetype
+ oid
+
+ typbasetype is the type that this one is based
+ off of. Normally references the domains parent type, and is 0 otherwise.
+
+
+
+ |
+ typnotnull
+ boolean
+
+ typnotnull represents a NOT NULL
+ constraint on a type. Normally used only for domains.
+
+
+
+ |
+ typmod
+ integer
+
+ typmod records type-specific data
+ supplied at table creation time (for example, the maximum
+ length of a varchar 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
+ pg_attribute.atttypmod on creation
+ of a table using a domain as it's field type.
+
+
+
+ |
+ typdefaultbin
+ text
+
+ typdefaultbin is NULL for types without a
+ default value. If it's not NULL, it contains the internal string
+ representation of the default expression node.
+
+
+
|
typdefault
text
COMMENT ON
[
- [ DATABASE | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ] object_name |
+ [ DATABASE | DOMAIN | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ] object_name |
COLUMN table_name.column_name |
AGGREGATE agg_name (agg_type) |
FUNCTION func_name (arg1, arg2, ...) |
TRIGGER trigger_name ON table_name
] IS 'text'
-
+
1999-10-25
-
+
1998-09-08
COMMENT stores a comment about a database object.
- Comments can be
+ Comments can be
easily retrieved with psql's
\dd, \d+, or \l+
commands. Other user interfaces to retrieve comments can be built atop
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';
-
+
Compatibility
-
+
1998-09-08
--- /dev/null
+
+
+
+
+
+ CREATE DOMAIN
+
+ SQL - Language Statements
+
+
+
+ CREATE DOMAIN
+
+
+ define a new domain
+
+
+
+
+ 2002-02-24
+
+
+CREATE DOMAIN domainname data_type [ DEFAULT default_expr> ] [ column_constraint [, ... ] ]
+[ CONSTRAINT constraint_name ]
+{ NOT NULL | NULL }
+
+
+
+
+
+ 2002-02-24
+
+
+ Parameters
+
+
+
+
+ domainname
+
+ The name of a domain to be created.
+
+
+
+
+
+ data_type
+
+ The data type of the domain. This may include array specifiers.
+ Refer to the User's Guide for further
+ information about data types and arrays.
+
+
+
+
+
+ DEFAULT
+ default_expr
+
+ The 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.
+
+
+ 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.
+
+
+
+ The default of a column will be tested before that of the domain.
+
+
+
+
+
+
+ CONSTRAINT constraint_name
+
+ An optional name for a domain. If not specified,
+ the system generates a name.
+
+
+
+
+
+ NOT NULL>
+
+ The column is not allowed to contain NULL values. This is
+ equivalent to the column constraint
CHECK (
+ class="PARAMETER">column NOT NULL).
+
+
+
+
+
+ NULL>
+
+ The column is allowed to contain NULL values. This is the default.
+
+
+ This clause is only available for compatibility with
+ non-standard SQL databases. Its use is discouraged in new
+ applications.
+
+
+
+
+
+
+
+
+
+
+ 2002-02-24
+
+
+ Outputs
+
+
+
+
+
+CREATE DOMAIN
+
+
+ Message returned if the domain is successfully created.
+
+
+
+
+
+
+
+
+
+
+ 2002-02-24
+
+
+ Description
+
+
+ CREATE DOMAIN 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.
+ domainname is
+ the name of the new type and must be unique within the
+ types and domains defined for this database.
+
+
+ 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.
+
+
+
+
+
Examples
+ This example creates the country_code data type and then uses the
+ type in a table definition:
+CREATE DOMAIN country_code char(2) NOT NULL;
+CREATE TABLE countrylist (id INT4, country country_code);
+
+
+
+
+
+
Compatibility
+
+ This CREATE DOMAIN command is a
+
PostgreSQL extension. CHECK and FOREIGN KEY
+ constraints are currently unsupported.
+
+
+
+
+
See Also
+
+
+
+ PostgreSQL Programmer's Guide
+
+
+
+
+
+
+
--- /dev/null
+
+
+
+
+
+ DROP DOMAIN
+
+ SQL - Language Statements
+
+
+
+ DROP DOMAIN
+
+
+ remove a user-defined domain
+
+
+
+
+ 1999-07-20
+
+
+DROP DOMAIN domainname [, ...]
+
+
+
+
+ 2002-02-24
+
+
+ Inputs
+
+
+
+ domainname
+
+ The name of an existing domain.
+
+
+
+
+
+
+
+
+
+ 2002-02-24
+
+
+ Outputs
+
+
+
+
+DROP
+
+
+ The message returned if the command is successful.
+
+
+
+
+
+ERROR: RemoveDomain: type 'domainname' does not exist
+
+
+ This message occurs if the specified domain (or type) is not found.
+
+
+
+
+
+
+
+
+
+
+ 2002-02-24
+
+
+ Description
+
+ DROP DOMAIN will remove a user domain from the
+ system catalogs.
+
+ Only the owner of a domain can remove it.
+
+
+
+
+
Notes
+
+
+
+ It is the user's responsibility to remove any operators,
+ functions, aggregates, access methods, and tables that
+ use a deleted domain.
+
+
+
+
+
+
+
Examples
+ To remove the box domain:
+
+DROP DOMAIN box RESTRICT;
+
+
+
+
+
+
Compatibility
+
+ A DROP DOMAIN statement exists in SQL99. As with
+ most other drop
commands, DROP
+ DOMAIN in SQL99 requires a drop behavior
+ clause to select between dropping all dependent objects or refusing
+ to drop if dependent objects exist:
+
+DROP DOMAIN name { CASCADE | RESTRICT }
+
+
PostgreSQL enforces the existance of
+ RESTRICT or CASCADE but ignores their enforcement against the
+ system tables.
+
+
+
+
+
See Also
+
+
+
+
+
+
+
+
&createAggregate;
&createConstraint;
&createDatabase;
+ &createDomain;
&createFunction;
&createGroup;
&createIndex;
&delete;
&dropAggregate;
&dropDatabase;
+ &dropDomain;
&dropFunction;
&dropGroup;
&dropIndex;
&unlisten;
&update;
&vacuum;
-
+