Перейти к содержимому

ALTER TABLE

ALTER TABLE изменяет определение существующей таблицы.

ALTER TABLE table_name ADD [COLUMN] column_definition
ALTER TABLE table_name DROP [COLUMN] [IF EXISTS] column_name
ALTER TABLE table_name MODIFY [COLUMN] column_definition
ALTER TABLE table_name RENAME [COLUMN] column_name TO new_column_name
ALTER TABLE table_name RENAME TO new_table_name

ADD вводит столбец, DROP удаляет его, MODIFY заменяет поддерживаемое определение, а RENAME меняет имя столбца или таблицы. Каждую форму следует считать миграцией данных.

column_definition содержит имя, тип и поддерживаемые ограничения. Обязательному столбцу, добавляемому к существующим строкам, нужен применимый DEFAULT. Новое имя не должно конфликтовать с каталогом.

Успех возвращает командный результат без строк. DESCRIBE показывает итоговое определение столбцов.

ALTER TABLE транзакционен и удерживает каталог, строки и индексы в одной границе COMMIT. ROLLBACK восстанавливает прежнее определение.

Существующие данные должны удовлетворять новому определению. Удаление столбцов со ссылками или индексами и неподдержанные преобразования ключей могут завершиться ошибкой. Матрица не обещает все сочетания ограничений и типов для MODIFY.

Эффективный Principal должен владеть таблицей; сессии также нужен CONNECT. Bootstrap-владелец обходит обычные проверки объектов.

CREATE TABLE ref_alter_table (id INTEGER PRIMARY KEY, label TEXT);
INSERT INTO ref_alter_table VALUES (1, 'draft');
ALTER TABLE ref_alter_table ADD COLUMN revision INTEGER NOT NULL DEFAULT 1;
ALTER TABLE ref_alter_table RENAME COLUMN label TO title;
SELECT id, title, revision FROM ref_alter_table;

См. Определение схемы, CREATE TABLE и Управление доступом.