Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_KL_2010_14.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
28.97 Mб
Скачать

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

Чаще всего инструкция 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.

Изменение первичных и вторичных ключей

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

Пример. Сделать столбец REGION таблицы OFFISY внешним ключом для вновь созданной таблицы REGIONS, первичным ключом которой является название региона.

ALTER TABLE OFFISY

ADD CONSTRAINT IN REGION

FOREIGN KEY (REGION) REFERENCES REGIONS

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

Пример. Изменить первичный ключ таблицы OFFISY.

ALTER TABLE SLUZHASCHIE

DROP CONSTRAINT WORKSIN

FOREIGN KEY (REP_OFFICE) REFERENCES OFFISY

ALTER TABLE OFFISY

DROP PRIMARY KEY (OFFICE)

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]