+++ /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 | DOMAIN | INDEX | RULE | SEQUENCE | TABLE | TYPE | VIEW ] object_name |
+ [ DATABASE | 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;
-
+