Domains
286
Domains
Domains are aliases for built-in data types, including precision and scale
values where applicable, and optionally including DEFAULT values and
CHECK conditions. Some domains, such as the monetary data types, are pre-
defined in Adaptive Server Anywhere, but you can add more of your own.
Domains, sometimes called user-defined data types, allow columns
throughout a database to be automatically defined on the same data type,
with the same NULL or NOT NULL condition, with the same DEFAULT
setting, and with the same CHECK condition. Domains encourage
consistency throughout the database and can eliminate some types of errors.
Domains are created using the CREATE DOMAIN statement For full
description of the syntax, see "CREATE DOMAIN statement" on page 433.
The following statement creates a data type named street_address, which is
a 35-character string.
CREATE DOMAIN street_address CHAR( 35 )
CREATE DATATYPE can be used as an alternative to CREATE DOMAIN,
but is not recommended because CREATE DOMAIN is the syntax used in
the draft SQL/3 standard.
Resource authority is required to create data types. Once a data type is
created, the user ID that executed the CREATE DOMAIN statement is the
owner of that data type. Any user can use the data type. Unlike with other
database objects, the owner name is never used to prefix the data type name.
The street_address data type may be used in exactly the same way as any
other data type when defining columns. For example, the following table
with two columns has the second column as a street_address column:
CREATE TABLE twocol (
id INT,
street street_address
)
Domains can be dropped by their owner or by the DBA, using the DROP
DOMAIN statement:
DROP DOMAIN street_address
This statement can be carried out only if the data type is not used in any table
in the database. If you attempt to drop a domain that is in use, the message
"Primary key for row in table ’SYSUSERTYPE’ is referenced in another
table" appears.
Function
Simple domains