Предложение CONSTRAINT

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

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

Предложение CONSTRAINT используется в инструкциях ALTER TABLE и CREATE TABLE для создания и удаления ограничений. Существует два типа предложения CONSTRAINT: для создания ограничения на одно поле и на несколько полей.

Примечание : Ядро СУБД Microsoft Access не поддерживает использование ОГРАНИЧЕНИЯ или любой другой инструкции языка определения данных, с помощью базы данных Microsoft Access. Используйте способов создания DAO.

Синтаксис

Ограничение на одно поле:

Имя ОГРАНИЧЕНИЯ {ПЕРВИЧНЫЙ КЛЮЧ | УНИКАЛЬНЫЕ | NOT NULL |
ForeigССЫЛКИntable [(foreignfield1, foreignfield2)]
[КАСКАДНОЕ ОБНОВЛЕНИЕ ON | ЗНАЧЕНИЕ NULL]
[КАСКАДНОГО УДАЛЕНИЯ ON | ЗАДАТЬ ЗНАЧЕНИЕ NULL]}

Составные ограничения

ИмяОГРАНИЧЕНИЯ
{ПЕРВИЧНЫЙ КЛЮЧ (primary1[, primary2 [, …]]) |
УНИКАЛЬНЫЕ (unique1[, unique2 [, …]]) |
NOT NULL (notnull1[, notnull2 [, …]]) |
ВНЕШНИЙ КЛЮЧ [НЕ ИНДЕКС] (аргументов ссылка1[, ref2 [, …]]) Ссылки НА таблицавнешнегоключа [(foreignfield1 [, foreignfield2 [, …]])]
[КАСКАДНОЕ ОБНОВЛЕНИЕ ON | ЗНАЧЕНИЕ NULL]
[КАСКАДНОГО УДАЛЕНИЯ ON | ЗАДАТЬ ЗНАЧЕНИЕ NULL]}

Предложение CONSTRAINT включает в себя следующие компоненты.

Компонент

Описание

имя

Имя создаваемого ограничения

первичный_ключ1, первичный_ключ2

Имена полей, определяемых как первичный ключ

уникальный_ключ1, уникальный_ключ2

Имена полей, определяемых как уникальный ключ

непустое1, непустое2

Имя поля или полей, которые ограничены непустых значений.

ссылка1, ссылка2

Имя поля или полей внешний ключ, которые ссылаются на поля в другой таблице

внешняя_таблица

Имя внешняя таблица, содержащей поля, заданные компонентами внешнее_поле

внешнее_поле1, внешнее_поле2

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


Замечания

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

Синтаксис для ограничений на несколько полей применяется в тех случаях, когда зарезервированное слово CONSTRAINT используется вне предложения определения поля в инструкции ALTER TABLE или CREATE TABLE.

В предложении CONSTRAINT можно назначить полю один из следующих типов ограничений.

  • Зарезервированное слово UNIQUE используется для назначения поля в качестве уникального ключа. Это значит, что две записи в таблице не могут иметь одно и то же значение в этом поле. Любое поле (или список полей) можно ограничить как уникальное. Если составное ограничение назначено уникальным ключом, объединенные значения всех полей в индексе должны быть уникальными, даже если несколько записей имеют одно и то же значение только в одном из полей.

  • Зарезервированные слова PRIMARY KEY используются для назначения одного поля или совокупности полей таблицы в качестве первичного ключа. Все значения в первичном ключе должны быть уникальными и отличными от Null, причем в таблице может быть только один первичный ключ.

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

  • Зарезервированные слова FOREIGN KEY используются для назначения поля в качестве внешнего ключа. Если первичный ключ внешней таблицы содержит больше одного поля, необходимо определить ограничение для нескольких полей, указав все ссылающиеся поля, имя внешней таблицы и имена полей внешней таблицы, на которые указывают ссылки (в том же порядке, в котором перечислены ссылающиеся поля). Если поля, на которые указывают ссылки, являются первичным ключом внешней таблицы, перечислять их не требуется. По умолчанию ядро базы данных обрабатывает первичный ключ внешней таблицы как поля, на которые указывают ссылки.

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

  • Можно задать выполнение действий во внешней таблице на основе соответствующих действий, выполняемых в первичном ключе таблицы, для которой определено предложение CONSTRAINT. Пример определения для таблицы Customers:

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Пример определения для таблицы «Заказы», в котором задается отношение, ссылающееся на первичный ключ таблицы «Клиенты»:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Предложения ON UPDATE CASCADE и ON DELETE CASCADE определены для внешнего ключа. Предложение ON UPDATE CASCADE означает, что при обновлении в таблице Customers идентификатора клиента (CustId) будет выполнено каскадное обновление в таблице Orders. В каждый заказ, содержащий соответствующее значение идентификатора клиента, будет автоматически внесено новое значение. Предложение ON DELETE CASCADE означает, что при удалении клиента из таблицы Customers все строки таблицы Orders, содержащие идентификатор этого клиента, также будут удалены.

Пример варианта определения для таблицы «Заказы» с использованием действия SET NULL вместо действия CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

Предложение ON UPDATE SET NULL означает, что при обновлении в таблице Customers идентификатора клиента (CustId) соответствующие значения внешнего ключа в таблице Orders автоматически изменятся на NULL. Аналогично, предложение ON DELETE SET NULL означает, что при удалении клиента из таблицы Customers все соответствующие внешние ключи в таблице Orders принимают значение NULL.

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



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

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×