FirebirdSQL logo
 SHADOWTABLE 

Примеры

Example 1. Создание домена, который может принимать значения больше 1000.
CREATE DOMAIN CUSTNO AS
INTEGER DEFAULT 10000
CHECK (VALUE > 1000);
Example 2. Создание домена, который может принимать значения 'Да' и 'Нет'.
CREATE DOMAIN D_BOOLEAN AS
CHAR(3) CHECK (VALUE IN ('Да', 'Нет'));
Example 3. Создание домена с набором символов UTF8 и порядком сортировки UNICODE_CI_AI.
CREATE DOMAIN FIRSTNAME AS
VARCHAR(30) CHARACTER SET UTF8
COLLATE UNICODE_CI_AI;
Example 4. Создание домена со значением по умолчанию.
CREATE DOMAIN D_DATE AS
DATE DEFAULT CURRENT_DATE
NOT NULL;
Example 5. Создание домена, определённого как массив из 2 элементов.

Создание домена, определённого как массив из 2 элементов типа NUMERIC(18, 3), нумерация элементов начинается с 1.

CREATE DOMAIN D_POINT AS
NUMERIC(18, 3) [2];
Note

Вы можете использовать домены определённые как массив только для определения столбцов таблиц.Вы не можете использовать такие домены для определения локальных переменных и аргументов PSQL модулей.

См. также:

ALTER DOMAIN, DROP DOMAIN.

ALTER DOMAIN

Назначение

Изменение текущих характеристик домена или его переименование.

Доступно в

DSQL, ESQL.

Синтаксис
ALTER DOMAIN domain_name
  [TO new_name]
  [TYPE <datatype>]
  [{SET DEFAULT {<literal> | NULL | <context_var>}} | DROP DEFAULT]
  [{SET | DROP} NOT NULL]
  [{ADD [CONSTRAINT] CHECK (<dom_condition>)} | DROP CONSTRAINT]

<datatype> ::=
    <scalar_datatype> | <blob_datatype> | <array_datatype>

<scalar_datatype> ::=  См. Синтаксис скалярных типов данных

<blob_datatype> ::= См. Синтаксис типа данных BLOB

<array_datatype> ::= См. Синтаксис массивов

<dom_condition> ::=
    <val> <operator> <val>
  | <val> [NOT] BETWEEN <val> AND <val>
  | <val> [NOT] IN (<val> [, <val> ...] | <select_list>)
  | <val> IS [NOT] NULL
  | <val> IS [NOT] DISTINCT <val>
  | <val> IS [NOT] {TRUE | FALSE | UNKNOWN}
  | <val> [NOT] CONTAINING <val>
  | <val> [NOT] STARTING [WITH] <val>
  | <val> [NOT] LIKE <val> [ESCAPE <val>]
  | <val> [NOT] SIMILAR TO <val> [ESCAPE <val>]
  | <val> <operator> {ALL | SOME | ANY} (<select_list>)
  | [NOT] EXISTS (<select_expr>)
  | [NOT] SINGULAR (<select_expr>)
  | (<dom_condition>)
  | NOT <dom_condition>
  | <dom_condition> OR <dom_condition>
  | <dom_condition> AND <dom_condition>


<operator> ::=
    <> | != | ^= | ~= | = | < | > | <= | >=
  | !< | ^< | ~< | !> | ^> | ~>

<val> ::=
    VALUE
  | <literal>
  | <context_var>
  | <expression>
  | NULL
  | NEXT VALUE FOR genname
  | GEN_ID(genname, <val>)
  | CAST(<val> AS <cast_type>)
  | (<select_one>)
  | func(<val> [, <val> ...])


<cast_type> ::=
   <datatype>
  | [TYPE OF] domain
  | TYPE OF COLUMN rel.col
Table 1. Параметры оператора ALTER DOMAIN
Параметр Описание

domain_name

Имя домена.

new_name

Новое имя домена.Может содержать до 63 символов.

datatype

Тип данных SQL.

literal

Литерал.

context_var

Любая контекстная переменная, тип которой совместим с типом данных домена.

dom_condition

Условие домена.

collation

Порядок сортировки.

select_one

Оператор SELECT выбирающий один столбец и возвращающий только одну строку.

select_list

Оператор SELECT выбирающий один столбец и возвращающий ноль и более строк.

select_expr

Оператор SELECT выбирающий несколько столбцов и возвращающий ноль и более строк.

expression

Выражение.

genname

Имя последовательности (генератора).

func

Скалярная функция.

Оператор ALTER DOMAIN изменяет текущие характеристики домена, в том числе и его имя.В одном операторе ALTER DOMAIN можно выполнить любое количество изменений домена.

TO name

Предложение TO позволяет переименовать домен.Имя домена можно изменить, если не существует зависимостей от этого домена, т.е.столбцов таблиц, локальных переменных и аргументов процедур, ссылающихся на данный домен.

SET DEFAULT

Предложение SET DEFAULT позволяет установить новое значение по умолчанию.Если домен уже содержал значение по умолчанию, то установка нового значения по умолчанию не требует предварительного удаления старого.

DROP DEFAULT

Предложение DROP DEFAULT удаляет ранее установленное для домена значение по умолчанию.В этом случае значением по умолчанию становится значение NULL.

ADD CONSTRAINT CHECK

Предложение ADD [CONSTRAINT] CHECK добавляет условие ограничения домена.Если домен уже содержал ограничение CHECK, то его предварительно необходимо удалить с помощью предложения DROP CONSTRAINT.

TYPE

Предложение TYPE позволяет изменить тип домена на другой допустимый тип.Не допустимы любые изменения типа, которые могут привести к потере данных.Например, количество символов в новом типе для домена не может быть меньше, чем было установлено ранее.

Note

Изменение типа не поддерживается для типа BLOB и массивов.

SET NOT NULL

Предложение SET NOT NULL устанавливает ограничение NOT NULL для домена.В этом случае для переменных и столбцах базирующихся на домене значение NULL не допускается.

Note

Успешная установка ограничения NOT NULL для домена происходит только после полной проверки данных таблиц, столбцы которых базируются на домене.Это может занять довольно длительное время.

Warning

При изменении описания домена, существующий PSQL код, может стать некорректным.Информация о том, как это обнаружить, находится в приложении Поле RDB$VALID_BLR.

DROP NOT NULL

Предложение DROP NOT NULL удаляет ограничение NOT NULL для домена.

Что не может изменить ALTER DOMAIN

  • Если домен был объявлен как массив, то изменить ни его тип, ни размерность нельзя. Также нет возможности изменить любой другой тип на тип массив.

  • Не существует способа изменить сортировку по умолчанию. В этом случае необходимо удалить домен и пересоздать его с новыми атрибутами.

Кто может изменить домен?

Выполнить оператор ALTER DOMAIN могут: