O comando CREATE DOMAIN permite a criação de domínios de campos que podem ser aplicados a campos das tabelas, restringindo o conjunto de valores aceitos para inclusão e/ou alteração dos dados.
Sintaxe:
CREATE DOMAIN name [ AS ] data_type
[ DEFAULT expression ]
[ constraint [ ... ] ]
onde constraint é:
[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression)
Exemplos:
1 - Criação de domínio simples.
CREATE DOMAIN sexo AS char(1);
2 - Domínio com a cláusula DEFAULT. O DEFAULT indica que 'M' será o valor gravado quando o mesmo não for fornecido e em seu lugar a palavra DEFAULT for empregada.
CREATE DOMAIN sexo_default AS char(1)
DEFAULT 'M';
3 - Domínio com a cláusula CHECK restringindo os sexos a masculino e feminino.
CREATE DOMAIN sexo_values AS char(1)
CHECK ( VALUE IN ('M', 'F'));
4 - Domínio com as cláusulas CHECK, NOT NULL e DEFAULT.
CREATE DOMAIN sexo_full AS char(1)
DEFAULT 'M'
NOT NULL
CHECK ( VALUE IN ('M', 'F'));
5 - Domínio em um campo inteiro.
CREATE DOMAIN idade AS integer
DEFAULT 0
NOT NULL
CHECK ( VALUE > 0);
6 - Domínio em um campo tipo data.
CREATE DOMAIN nascimento AS date
DEFAULT '01/01/1900'
NOT NULL
CHECK ( VALUE > '01/01/1900');
7 - Domínio com uma constraint explicitamente nomeada.
CREATE DOMAIN data_evento AS date
CONSTRAINT valida_data CHECK ( VALUE > '01/01/1900' AND VALUE > '01/01/2099');
8 - Utilização de domínios na criação de uma tabela.
CREATE TABLE pessoa_teste(
cod serial,
nasc nascimento,
idade idade,
sexo sexo_full);
INSERT INTO pessoa_teste (nasc ,idade ,sexo) VALUES ('01/01/2007', 12, 'M');