Spec-Zone.ru › DuckDB

Заявление ALTER TABLE

Заявление ALTER TABLE изменяет схему существующей таблицы в каталоге.

Примеры

CREATE TABLE integers (i INTEGER, j INTEGER);

Добавить новый столбец с именем k к таблице integers, он будет заполнен значением по умолчанию NULL:

ALTER TABLE integers ADD COLUMN k INTEGER;

Добавить новый столбец с именем l к таблице integers, он будет заполнен значением по умолчанию 10:

ALTER TABLE integers ADD COLUMN l INTEGER DEFAULT 10;

Удалить столбец k из таблицы integers:

ALTER TABLE integers DROP k;

Изменить тип столбца i на тип VARCHAR с использованием стандартного преобразования:

ALTER TABLE integers ALTER i TYPE VARCHAR;

Изменить тип столбца i на тип VARCHAR, используя указанное выражение для преобразования данных для каждой строки:

ALTER TABLE integers ALTER i SET DATA TYPE VARCHAR USING concat(i, '_', j);

Установить значение по умолчанию столбца:

ALTER TABLE integers ALTER COLUMN i SET DEFAULT 10;

Удалить значение по умолчанию столбца:

ALTER TABLE integers ALTER COLUMN i DROP DEFAULT;

Сделать столбец не допускающим NULL:

ALTER TABLE integers ALTER COLUMN i SET NOT NULL;

Удалить ограничение не-NULL:

ALTER TABLE integers ALTER COLUMN i DROP NOT NULL;

Переименовать таблицу:

ALTER TABLE integers RENAME TO integers_old;

Переименовать столбец таблицы:

ALTER TABLE integers RENAME i TO ii;

Добавить первичный ключ к столбцу таблицы:

ALTER TABLE integers ADD PRIMARY KEY (i);

Синтаксис

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

RENAME TABLE

Переименовать таблицу:

ALTER TABLE integers RENAME TO integers_old;

Оператор RENAME TO переименовывает всю таблицу, изменяя её имя в схеме. Обратите внимание, что любые представления, которые зависят от таблицы, не обновляются автоматически.

RENAME COLUMN

Переименовать столбец таблицы:

ALTER TABLE integers RENAME i TO j;
ALTER TABLE integers RENAME COLUMN j TO k;

Оператор RENAME COLUMN переименовывает один столбец в таблице. Любые ограничения, которые зависят от этого имени (например, ограничения CHECK ), обновляются автоматически. Однако обратите внимание, что любые представления, которые зависят от имени этого столбца, не обновляются автоматически.

ADD COLUMN

Добавить новый столбец с именем k к таблице integers, он будет заполнен значением по умолчанию NULL:

ALTER TABLE integers ADD COLUMN k INTEGER;

Добавить новый столбец с именем l к таблице integers, он будет заполнен значением по умолчанию 10:

ALTER TABLE integers ADD COLUMN l INTEGER DEFAULT 10;

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

DROP COLUMN

Удалить столбец k из таблицы integers:

ALTER TABLE integers DROP k;

Оператор DROP COLUMN может быть использован для удаления столбца из таблицы. Обратите внимание, что столбцы можно удалить только если на них не ссылаются индексы. Это включает любые индексы, созданные в рамках ограничения PRIMARY KEY или UNIQUE. Столбцы, которые являются частью многостолбцовых ограничений проверки, также не могут быть удалены. Если вы попытаетесь удалить столбец с индексом на нём, DuckDB вернёт следующее сообщение об ошибке:

Dependency Error: Cannot alter entry "..." because there are entries that depend on it.

ALTER TYPE

Изменить тип столбца i на тип VARCHAR с использованием стандартного преобразования:

ALTER TABLE integers ALTER i TYPE VARCHAR;

Изменить тип столбца i на тип VARCHAR, используя указанное выражение для преобразования данных для каждой строки:

ALTER TABLE integers ALTER i SET DATA TYPE VARCHAR USING concat(i, '_', j);

Оператор SET DATA TYPE изменяет тип столбца в таблице. Все имеющиеся данные в столбце преобразуются в соответствии с предоставленным выражением в операторе USING, или, если оператор USING отсутствует, приводится к новому типу данных. Обратите внимание, что тип столбца может быть изменён только в том случае, если на него не ссылаются индексы и он не является частью ограничений CHECK.

SET / DROP DEFAULT

Установить значение по умолчанию столбца:

ALTER TABLE integers ALTER COLUMN i SET DEFAULT 10;

Удалить значение по умолчанию столбца:

ALTER TABLE integers ALTER COLUMN i DROP DEFAULT;

Оператор SET/DROP DEFAULT изменяет значение по умолчанию DEFAULT существующего столбца. Обратите внимание, что это не изменяет существующие данные в столбце. Удаление значения по умолчанию эквивалентно установлению значения по умолчанию в NULL.

Предупреждение В настоящее время DuckDB не позволит вам изменить таблицу, если существуют какие-либо зависимости. Это означает, что если у вас есть индекс на столбце, вам сначала необходимо удалить индекс, изменить таблицу, а затем снова создать индекс. В противном случае вы получите Dependency Error.

ADD PRIMARY KEY

Добавить первичный ключ к столбцу таблицы:

ALTER TABLE integers ADD PRIMARY KEY (i);

Добавить первичный ключ к нескольким столбцам таблицы:

ALTER TABLE integers ADD PRIMARY KEY (i, j);

ADD / DROP CONSTRAINT

Операторы ADD CONSTRAINT и DROP CONSTRAINT пока не поддерживаются в DuckDB.

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/sql/statements/alter_table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API