Самоучитель по SQL-сервер в Linux

         

ALTER TABLE

Модификация таблиц и атрибутов нолей.

Синтаксис

ALTER TABLE таблица [ * ]

ADD [ COLUMN ] поле тип

ALTER TABLE таблица [ * ]

ALTER [ COLUMN ] поле { SET DEFAULT noj/нолчант \ DROP DEFAULT }

ALTER TABLE таблица [ * ]

RENAME [ COLUMN ] попе ТО новое_попе

ALTER TABLE таблица

RENAME TO новое_имя

ALTER TABLE таблица

ADD CONSTRAINT новое_ограничение определение

ALTER TABLE таблица

OWNER TO новый_владелец

Параметры



  • таблица. Имя существующей таблицы, в которую вносятся изменения.
  • поле. Имя нового или существующего поля, в которое вносятся изменения.
  • тип. Тип данных нового поля (используется только при создании новых полей).
  • по _умолчанию. Новое значение но умолчанию для заданного поля.
  • новое_поле. Новое имя поля.
  • новая_таблица. Новое имя таблицы.
  • новое_ограничение определение. Имя и определение нового ограничения, добавляемого в существующую таблицу. За дополнительной информацией о создании ограничений обращайтесь к главе 7.
  • новый_владелец. Новый владелец таблицы.

Результаты

  • ALTER. Сообщение выдается при успешной модификации поля или таблицы.
  • ERROR. Ошибка — модификация поля или таблицы невозможна (по возможности с разъяснением причин).

Описание

Команда ALTER TABLE предназначена для внесения разнообразных изменений в структуру существующих таблиц баз данных. Переименование полей или таблиц производится ключевым словом RENAME. Содержимое поля или таблицы при переименовании не изменяется. Новые ограничения включаются в таблицу секцией ADD CONSTRAINT, при этом ограничения определяются с таким же синтаксисом, как при создании таблицы командой CREATE TABLE (см. описание команды CREATE TABLE).

В последней на момент издания книги версии PostgreSQL (7.1.x) секция ADD CONSTRAINT поддерживает добавление только ограничений внешнего ключа (FOREIGN KEY) и проверки (CHECK). Ограничение уникальности (UNIQUE) можно установить косвенно — построением уникального индекса командой CREATE INDEX (см. описание команды CREATE INDEX). Чтобы создать любое другое ограничение, необходимо создать таблицу заново и заполнить ее данными.

Новые поля создаются секцией ADD COLUMN с таким же синтаксисом, как при создании таблицы командой CREATE TABLE (см. описание команды CREATE TABLE). Чтобы изменить или удалить значение по умолчанию для поля, воспользуйтесь секцией ALTER COLUMN с подсекциями SET DEFAULT или DROP DEFAULT (помните, что значения по умолчанию применяются только к вновь созданным полям и не распространяются на существующие поля).

PostgreSQL 7.1.x не позволяет задать значение по умолчанию или ограничение для поля одновременно с его созданием в секции ADD COLUMN. Тем не менее секция SET DEFAULT команды ALTER TABLE может использоваться для определения значений по умолчанию после создания поля. Если значение по умолчанию задается после того, как таблица использовалась в течение некоторого времени, не забудьте обновить содержимое поля командой UPDATE.

ПРИМЕЧАНИЕ

Чтобы модифицировать таблицу, необходимо быть ее владельцем или суперпользователем.

Примеры

Следующая команда включает в таблицу employees новое поле address типа text:

booktown=# ALTER TABLE employees ADD COLUMN address text;

ALTER

Затем созданное поле address переименовывается в mailing_address:

booktown=# ALTER TABLE employees RENAME COLUMN address TO mailing_address;

ALTER

Переименование таблицы employees в personnel:

booktown=# ALTER TABLE employees RENAME TO personnel;

ALTER

Следующая команда назначает новым владельцем таблицы personnel пользователя PostgreSQL с именем Jonathan:

booktown=# ALTER TABLE personnel OWNER TO Jonathan:

ALTER

Наконец, следующая команда устанавливает для таблицы schedules ограничение внешнего ключа с именем valid_employee, проверяющее присутствие поля id в таблице personnel:

booktown=# ALTER TABLE schedules ADD CONSTRAINT valid_employee

booktown-# FOREIGN KEY (employeejd)

booktown-# REFERENCES personnel (id) MATCH FULL;

NOTICE: ALTER TABLE ... ADD CONSTRAINT will create implicit trigger(s) for

FOREIGN KEY check(s)

CREATE




Содержание раздела