Domain usage is not limited to column definitions for tables and views. Domains can be used to declare input and output parameters and variables in PSQL code.
A domain definition contains required and optional attributes. The data type is a required attribute. Optional attributes include:
a default value
to allow or forbid
character set (for character data types and text BLOB fields)
collation (for character data types)
Sample domain definition
See also for the description of differences in the data conversion mechanism when domains are specified for the TYPE OF
and TYPE OF COLUMN
modifiers.
While defining a column using a domain, it is possible to override some of the attributes inherited from the domain. Table 3.9 summarises the rules for domain override.
Table 3.11.2.1 Rules for Overriding Domain Attributes in Column Definition
A domain is created with the DDL statement CREATE DOMAIN
.
Short Syntax
CREATE DOMAIN name [AS] <type>
[DEFAULT {<const> | <literal> | NULL | <context_var>}]
[NOT NULL] [CHECK (<condition>)]
[COLLATE <collation>]
See alsoCREATE DOMAIN in the Data Definition Language (DDL) section.
3.11.3.1 Altering a Domain
To change the attributes of a domain, use the DDL statement ALTER DOMAIN
. With this statement you can:
drop the current default value
set a new default value
drop the constraint
set the
NOT NULL
constraintdrop an existing
CHECK
constraintadd a new
CHECK
constraint
Short Syntax
Example
ALTER DOMAIN STORE_GRP SET DEFAULT -1;
When changing a domain, its dependencies must be taken into account: whether there are table columns, any variables, input and/or output parameters with the type of this domain declared in the PSQL code. If you change domains in haste, without carefully checking them, your code may stop working!
Important
When you convert data types in a domain, you must not perform any conversions that may result in data loss. Also, for example, if you convert VARCHAR
to INTEGER
, check carefully that all data using this domain can be successfully converted.
See alsoALTER DOMAIN in the Data Definition Language (DDL) section.
3.11.3.2 Deleting (Dropping) a Domain
The DDL statement deletes a domain from the database, provided it is not in use by any other database objects.
Syntax
Example