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

Чаще всего инструкция ALTER TABLE применяется для добавления столбца в существующую таблицу. Предложение с определением столбца в инструкции ALTER TABLE имеет точно такой же вид, что и в инструкции CREATE TABLE, и выполняет ту же самую функцию. Новое определение добавляется в конец определений столбцов таблицы, и в последующих запросах новый столбец будет крайним справа. СУБД обычно предполагает, что новый столбец во всех существующих строках содержит значения NULL. Поэтому нельзя объявлять новый столбец как NOT NULL.

Но если такое объявление все же необходимо, то необходимо определить этот столбец как NOT NULL WITH DEFAULT. При этом СУБД считает, что этот столбец содержит значение по умолчанию, и не будет автоматически добавлять значение NULL.

Пример. Добавить контактный телефон и имя служащего компании клиента в таблицу CLIENTY.

ALTER TABLE SLUZHASCHIE

ADD CONTACT_NAME VARCHAR(30)

ALTER TABLE SLUZHASCHIE

ADD CONTACT_PHONE CHAR(10)

Пример. Добавить в таблицу TOVARY столбец с данными о минимальном допустимом количестве товара на складе.

ALTER TABLE TOVARY

ADD MIN_QTY INTEGER NOT NULL WITH DEFAULT 0

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

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

С помощью инструкции ALTER TABLE можно удалить из существующей таблицы один или несколько столбцов, если в них больше нет необходимости. Ниже приведен пример удаления столбца QUOTA из таблицы SLUZHASCHIE:

ALTER TABLE SLUZHASCHIE

DROP QUOTA

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

Эти проблемы в стандарте SQL2 решены так же, как и в случае инструкций DELETE и UPDATE, с помощью правил удаления RESTRICT и CASCADE.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: