ALTER TABLE
Изменение структуры таблицы.
DSQL, ESQL.
ALTER TABLE tablename
<operation> [, <operation>];
<operation> ::=
ADD <col_def>
| ADD <tconstraint>
| DROP colname
| DROP CONSTRAINT constr_name
| DROP SQL SECURITY
| ALTER [COLUMN] colname <col_mod>
| ALTER SQL SECURITY {DEFINER | INVOKER}
| {ENABLE | DISABLE} PUBLICATION
<col_def> ::=
<regular_col_def>
| <computed_col_def>
| <identity_col_def>
<regular_col_def> ::=
colname { <datatype> | domainname }
[DEFAULT {literal | NULL | <context_var>}]
[NOT NULL]
[<col_constraint>]
[COLLATE collation_name]
<computed_col_def> ::=
colname [<datatype>]
{COMPUTED [BY] | GENERATED ALWAYS AS} (<expression>)
<identity_col_def> ::=
colname [<datatype>] {ALWAYS | GENERATED BY} DEFAULT AS IDENTITY
[(START WITH startvalue)] [<col_constraint>]
<col_mod> ::=
TO newname
| POSITION newpos
| <regular_col_mod>
| <computed_col_mod>
| <identity_col_mod>
<regular_col_mod> ::=
| TYPE { <datatype> | domain_name }
| SET DEFAULT {literal | NULL | <context_var>}
| DROP DEFAULT
| SET NOT NULL
| DROP NOT NULL
<computed_col_mod> ::=
[TYPE <datatype>] {GENERATED ALWAYS AS | COMPUTED [BY]} (<expression>)
<identity_col_mod> ::=
<alter identity column option> ...
| SET GENERATED { ALWAYS | BY DEFAULT } [<alter identity column option> ...]
| DROP INDENITY
<alter identity column option> ::=
RESTART [ WITH startvalue ]
| SET INCREMENT [BY] incrementvalue
<datatype> ::=
<scalar_datatype> | <blob_datatype> | <array_datatype>
<scalar_datatype> ::= См. Синтаксис скалярных типов данных
<blob_datatype> ::= См. Синтаксис типа данных BLOB
<array_datatype> ::= См. Синтаксис массивов
<col_constraint> ::=
[CONSTRAINT constr_name]
{ UNIQUE [<using_index>]
| PRIMARY KEY [<using_index>]
| REFERENCES other_table [(other_col)]
[ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[<using_index>]
| CHECK (<check_condition>)
}
<tconstraint> ::=
[CONSTRAINT constr_name]
{ UNIQUE (<col_list>) [<using_index>]
| PRIMARY KEY (<col_list>) [<using_index>]
| FOREIGN KEY (<col_list>)
REFERENCES other_table [(<col_list>)]
[ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
[<using_index>]
| CHECK (<check_condition>)
}
<col_list> ::= colname [, colname ...]
<using_index> ::= USING [ASC[ENDING] | DESC[ENDING]] INDEX indexname
<check_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>)
| (<check_condition>)
| NOT <check_condition>
| <check_condition> OR <check_condition>
| <check_condition> AND <check_condition>
<operator> ::=
<> | != | ^= | ~= | = | < | > | <= | >=
| !< | ^< | ~< | !> | ^> | ~>
<val> ::=
colname [[<array_idx> [, <array_idx> ...]]]
| literal
| <context_var>
| <expression>
| NULL
| NEXT VALUE FOR genname
| GEN_ID(genname, <val>)
| CAST(<val> AS <datatype>)
| (<select_one>)
| func(<val> [, <val> ...])
<cast_type> ::=
<datatype>
| [TYPE OF] domain_name
| TYPE OF COLUMN rel.colname
| Параметр | Описание |
|---|---|
tablename |
Имя таблицы. |
operation |
Одна из допустимых операций по изменению структуры таблицы. |
colname |
Имя столбца таблицы, может содержать до 63 символов.Должно быть уникальным внутри таблицы. |
newname |
Новое имя столбца таблицы, может содержать до 63 символов.Должно быть уникальным внутри таблицы. |
gencolname |
Имя вычисляемого столбца таблицы. |
idencolname |
Имя столбца идентификации. |
newpos |
Новая позиция столбца в таблице.Целое число в диапазоне от 1 до количества столбцов таблицы. |
datatype |
Тип данных SQL. |
domain_name |
Имя домена. |
startvalue |
Начальное значение столбца идентификации. |
incrementvalue |
Значение приращения для столбца идентификации.Должно быть отлично от 0. |
col_constraint |
Ограничение столбца. |
tconstraint |
Ограничение таблицы. |
constr_name |
Имя ограничения, может содержать до 63 символов. |
other_table |
Имя таблицы, на которую ссылается внешний ключ. |
other_col |
Столбец таблицы, на которую ссылается внешний ключ. |
using_index |
Позволяет задать имя автоматически создаваемого индекса для ограничения, и опционально определить, какой это будет индекс — по возрастанию (по умолчанию) или по убыванию. |
literal |
Литерал. |
context_var |
Любая контекстная переменная, тип которой совместим с типом данных столбца. |
check_condition |
Условие проверки ограничения.Выполняется, если оценивается как |
collation_name |
Имя порядка сортировки.Необходимо указывать если вы хотите чтобы порядок сортировки для столбца отличался от порядка сортировки для набора символов по умолчанию этого столбца. |
select_one |
Оператор |
select_list |
Оператор |
select_expr |
Оператор |
experssion |
Выражение. |
genname |
Имя последовательности (генератора). |
func |
Скалярная функция. |
Оператор ALTER TABLE изменяет структуру существующей таблицы.Одиночный оператор ALTER TABLE позволяет производить множество операций добавления/удаления столбцов и ограничений, а также модификаций столбцов.Список операций выполняемых при модификации таблицы разделяется запятой.