×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

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

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.2.7. Изменение таблиц

2.2.7.1. Добавление столбца
2.2.7.2. Удаление столбца
2.2.7.3. Добавление ограничения
2.2.7.4. Удаление ограничения
2.2.7.5. Изменение значения по умолчанию для столбца
2.2.7.6. Изменение типа данных столбца
2.2.7.7. Переименование столбца
2.2.7.8. Переименование таблицы

Если после создания таблицы обнаруживается ошибка или изменяются требования приложения, таблицу можно удалить и создать заново. Однако это решение не является удобным, если таблица уже заполнена данными или если на неё ссылаются другие объекты базы данных (например, через ограничение внешнего ключа). Поэтому Digital Q.DataBase предусмотрен набор команд для внесения изменений в существующие таблицы. Обратите внимание, что это концептуально отличается от изменения данных в таблице: в данном случае рассматривается изменение определения или структуры таблицы.

Вы можете:

  • Добавлять столбцы

  • Удалять столбцы

  • Добавлять ограничения

  • Удалять ограничения

  • Изменять значения по умолчанию

  • Изменять типы данных столбцов

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

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

Все эти действия выполняются с помощью ALTER TABLE команды, на странице описания которой приведена более подробная информация.

2.2.7.1. Добавление столбца #

Для добавления столбца используется команда следующего вида:

ALTER TABLE products ADD COLUMN description text;

Новый столбец изначально заполняется значением по умолчанию (null, если не указано DEFAULT предложение).

Подсказка

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

Однако если значение по умолчанию является изменчивым (например, clock_timestamp()), каждая строка должна быть обновлена значением, вычисленным в момент выполнения команды ALTER TABLE. Чтобы избежать потенциально длительной операции обновления (особенно если столбец в любом случае предполагается заполнить в основном значениями не по умолчанию), может быть предпочтительнее добавить столбец без значения по умолчанию, а затем вставить нужные значения, используя UPDATE, а затем добавить требуемое значение по умолчанию, как описано ниже.

Вы также можете одновременно определить ограничения для столбца, используя стандартный синтаксис:

ALTER TABLE products ADD COLUMN description text CHECK (description <> '');

Фактически, здесь могут быть использованы все параметры, применимые к описанию столбца в CREATE TABLE команде CREATE TABLE. Следует, однако, учитывать, что значение по умолчанию должно удовлетворять заданным ограничениям, иначе команда ADD завершится ошибкой. Кроме того, ограничения можно добавить позже (см. ниже) после корректного заполнения нового столбца.

2.2.7.2. Удаление столбца #

Для удаления столбца используется команда следующего вида:

ALTER TABLE products DROP COLUMN description;

Все данные, содержавшиеся в столбце, будут удалены. Ограничения таблицы, связанные с данным столбцом, также удаляются. Однако если на столбец ссылается ограничение внешнего ключа из другой таблицы, Digital Q.DataBase система не удалит такое ограничение автоматически. Можно разрешить удаление всех объектов, зависящих от данного столбца, добавив CASCADE:

ALTER TABLE products DROP COLUMN description CASCADE;

См. Раздел 2.2.15 описание общего механизма, лежащего в основе этого процесса.

2.2.7.3. Добавление ограничения #

Для добавления ограничения используется синтаксис определения ограничений таблицы. Например:

ALTER TABLE products ADD CHECK (name <> '');
ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;

Для добавления ограничения NOT NULL, которое невозможно определить как ограничение таблицы, используется следующий синтаксис:

ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;

Ограничение проверяется немедленно, поэтому данные таблицы должны соответствовать устанавливаемому ограничению еще до его добавления.

2.2.7.4. Удаление ограничения #

Для удаления ограничения необходимо знать его имя. Если имя было задано пользователем, процедура упрощается. В противном случае системе будет присвоено автоматически сгенерированное имя, которое потребуется выяснить. psql команда \d имя_таблицы может быть полезно в данном случае; другие интерфейсы также могут предоставлять способы просмотра структуры таблицы. Команда для удаления выглядит следующим образом:

ALTER TABLE products DROP CONSTRAINT some_name;

(Если вы работаете с автоматически сгенерированным именем ограничения, например $2, не забудьте, что его потребуется заключить в двойные кавычки, чтобы оно стало корректным идентификатором.)

Как и при удалении столбца, необходимо добавить CASCADE если требуется удалить ограничение, от которого зависят другие объекты. Например, ограничение внешнего ключа зависит от ограничения уникальности или Ограничения PRIMARY KEY для соответствующих столбцов.)

Это правило применимо ко всем типам ограничений, за исключением ограничений NOT NULL. Для удаления ограничения NOT NULL используется команда:

ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;

(Напомним, что ограничения NOT NULL не имеют имен.)

2.2.7.5. Изменение значения по умолчанию для столбца #

Чтобы установить для столбца новое значение по умолчанию, используется команда вида:

ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;

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

Для удаления значения по умолчанию используется команда:

ALTER TABLE products ALTER COLUMN price DROP DEFAULT;

Это фактически равносильно установке значения по умолчанию в null. Как следствие, удаление значения по умолчанию в тех случаях, когда оно не было определено, не является ошибкой, так как значением по умолчанию неявно считается null.

2.2.7.6. Изменение типа данных столбца #

Для преобразования столбца в другой тип данных используется команда следующего вида:

ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);

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

Digital Q.DataBase попытается преобразовать значение столбца по умолчанию (при его наличии) в новый тип, а также любые ограничения, связанные с этим столбцом. Однако такие преобразования могут завершиться ошибкой или привести к неожиданным результатам. Зачастую рекомендуется удалить все ограничения столбца перед изменением его типа, а затем снова добавить соответствующие измененные ограничения.

2.2.7.7. Переименование столбца #

Для переименования столбца используется следующая команда:

ALTER TABLE products RENAME COLUMN product_no TO product_number;

2.2.7.8. Переименование таблицы #

Для переименования таблицы используется следующая команда:

ALTER TABLE products RENAME TO items;

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению