FirebirdSQL logo

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

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

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

docnext count = 5

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

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

Примеры

Example 1. Изменение значения по умолчанию для домена.
ALTER DOMAIN CUSTNO
INTEGER DEFAULT 2000;
Example 2. Переименование домена.
ALTER DOMAIN D_BOOLEAN TO D_BOOL;
Example 3. Удаление значения по умолчанию и добавления ограничения для домена.
ALTER DOMAIN D_DATE
DROP DEFAULT
ADD CONSTRAINT CHECK (VALUE >= date '01.01.2000');
Example 4. Изменение ограничения домена.
ALTER DOMAIN D_DATE
DROP CONSTRAINT;

ALTER DOMAIN D_DATE
ADD CONSTRAINT CHECK
(VALUE BETWEEN date '01.01.1900' AND date '31.12.2100');
Example 5. Изменение типа домена.
ALTER DOMAIN FIRSTNAME
TYPE VARCHAR(50) CHARACTER SET UTF8;
Example 6. Добавление ограничения NOT NULL для домена.
ALTER DOMAIN FIRSTNAME SET NOT NULL;
См. также:

CREATE DOMAIN, DROP DOMAIN.

DROP DOMAIN

Назначение

Удаление существующего домена.

Доступно в

DSQL, ESQL.

Синтаксис
DROP DOMAIN domain_name
Table 1. Параметры оператора DROP DOMAIN
Параметр Описание

domain_name

Имя домена.

Оператор DROP DOMAIN удаляет домен, существующий в базе данных.Невозможно удалить домен, на который ссылаются столбцы таблиц базы данных или если он был задействован в одном из PSQL модулей.Чтобы удалить такой домен, необходимо удалить из таблиц все столбцы, ссылающиеся на домен и удалить все ссылки на домен из PSQL модулей.

Кто может удалить домен?

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

Примеры

Example 1. Удаление домена
DROP DOMAIN COUNTRYNAME;
См. также:

CREATE DOMAIN, ALTER DOMAIN.