Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Зависимости должны быть удалены до удаления столбца. Столбцы, включенные в состав ограничений PRIMARY KEY и UNIQUE, не могут быть удалены, если на них есть ссылки в ограничениях FOREIGN KEY. В этом случае удалите ограничение FOREIGN KEY до удаления ограничения PRIMARY KEY или UNIQUE. После этого удаляйте столбец.

Синтаксис:

ALTER TABLE имя-таблицы DROP имя-столбца [, имя-столбца ...];

Например, следующий оператор удаляет столбец JOB_GRADE из таблицы EMPLOYEE:

ALTER TABLE EMPLOYEE DROP JOB_GRADE;

Удаление нескольких столбцов в одном операторе:

ALTER TABLE EMPLOYEE

DROP JOB_GRADE,

DROP FULL NAME;

<p>Удаление ограничений</p>

Необходимо выполнять удаление ограничений в правильной последовательности, если ограничения PRIMARY KEY и CHECK имеют зависимости.

! ! !

СОВЕТ. Для поиска имен ограничений может оказаться полезным выполнение четырех системных просмотров, определенных в скрипте system_views.sql, представленном в приложении 9.

. ! .

Ограничения UNIQUE KEY и PRIMARY KEY

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

. . .

FK_DATA_ID FOREIGN KEY DATA_ID

REFERENCES TEST_UQ (DATA_I D) ;

Если ключ, на который имеются ссылки, является первичным ключом, то имя столбца первичного ключа является необязательным в объявлениях внешнего ключа и часто опускается. Например, посмотрите на базу данных ../samples/employee.gdb:

...TABLE PROJECT (

. . . ,

TEAM_CONSTRT FOREIGN KEY(TEAM_LEADER)

REFERENCES EMPLOYEE );

Удаление ограничения внешнего ключа простое:

ALTER TABLE PROJECT

DROP CONSTRAINT TEAM_CONSTRT;

COMMIT;

После этого становится возможным удаление ограничения первичного ключа для столбца EMP_NO таблицы EMPLOYEE:

ALTER TABLE EMPLOYEE

DROP CONSTRAINT EMP_NO_CONSTRT ;

Ограничения CHECK

Любые условия CHECK, которые были добавлены в процессе определения таблицы, могут быть удалены без каких-либо осложнений. Условия CHECK, наследуемые от домена, являются более проблематичными. Для освобождения от ограничений домена необходимо выполнить операцию ALTER TABLE ALTER COLUMN ... TYPE для изменения типа данных столбца или указания другого домена.

<p>Добавление столбца</p>

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

Синтаксис:

ALTER TABLE таблица ADD <определение-столбца>

<определение-столбца> = столбец

{<тип данных> | [COMPUTED [BY] (<выражение>) | домен}

[DEFAULT {литерал \ NULL | USER} ]

[NOT NULL] [<ограничение-столбца>]

[COLLATE порядок-сортировки]

<ограничение-столбца> = [CONSTRAINT ограничение]

<определение -ограничения> [< ограничение-столбца>]

< определение -ограничения>=

PRIMARY KEY

| UNIQUE

| CHECK (<условие-поиска>)

| REFERENCES другая-таблица [(другой-столбец [,другой-столбец...])]

[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

[ON UPDATE {NO ACTION|CASCADE | SET DEFAULT | SET NULL}]

Следующий оператор добавляет столбец EMP_NO в таблицу EMPLOYEE С использованием домена EMPNO:

ALTER TABLE EMPLOYEE ADD EMP_NO EMPNO NOT NULL;

Пример

Здесь мы добавляем два столбца EMAIL_ID и LEAVE_STATUS в таблицу EMPLOYEE:

ALTER TABLE EMPLOYEE

ADD EMAIL_ID VARCHAR(10) NOT NULL,

ADD LEAVE_STATUS DEFAULT 10 INTEGER NOT NULL;

Включение ограничений целостности

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

ALTER TABLE EMPLOYEE

ADD EMAIL_ID VARCHAR(10) NOT NULL,

ADD LEAVE_STATUS DEFAULT 10 INTEGER NOT NULL,

ADD CONSTRAINT UQ_EMAIL_ID UNIQUE(EMAIL_ID);

или

ALTER TABLE EMPLOYEE

ADD EMAIL_ID VARCHAR(IO) NOT NOLL UNIQUE,

ADD LEAVE_STATUS DEFAULT 10 INTEGER NOT NULL;

Добавление новых ограничений таблицы

Предложение ADD CONSTRAINT может быть использовано для добавления ограничений на уровне таблицы для нового или существующего столбца.

Синтаксис:

ALTER TABLE имя ADD [CONSTRAINT ограничение] <ограничение-таблицы>;

где ограничение-таблицы- может быть ограничением PRIMARY KEY, FOREIGN KEY, UNIQUE или CHECK. Фраза CONSTRAINT ограничение может быть опущена, если вам не нужно имя ограничения.

Пример

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

ALTER TABLE EMPLOYEE

ADD CONSTRAINT UQ_PHONE_EXT UNIQUE(PHONE_EXT);

<p>Когда недостаточно ALTER TABLE</p>
Перейти на страницу:

Похожие книги

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

Программирование, программы, базы данных / Программирование / Книги по IT