Речення CONSTRAINT

Увага! : Цю статтю перекладено за допомогою служби машинного перекладу; див. застереження. Версію цієї статті англійською мовою див. тут для отримання довідки.

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

Речення CONSTRAINT можна використати в операторах ALTER TABLE і CREATE TABLE для створення або видалення обмежень. Існують два типи речень CONSTRAINT: один для створення обмеження для одного поля, інший — для створення обмеження для кількох полів.

Примітка : Обробник баз даних Microsoft Access не підтримує використання ОБМЕЖЕННЯ, або будь-які дані визначення мови звітність, з баз даних Microsoft Access. Використовуйте DAO створення методів.

Синтаксис

Обмеження для одного поля:

ОБМЕЖЕННЯ ім'я {ПЕРВИННИЙ КЛЮЧ | УНІКАЛЬНІ | НЕ NULL |
ПОСИЛАННЯ foreigntable [(foreignfield1, foreignfield2)]
[Увімкнуто КАСКАДНЕ ОНОВЛЕННЯ | УСТАНОВИТИ значення NULL]
[Увімкнуто КАСКАДНЕ ВИДАЛЕННЯ | УСТАНОВИТИ ЗНАЧЕННЯ NULL]}

Обмеження для кількох полів:

ОБМЕЖЕННЯ ім'я
{ПЕРВИННИЙ КЛЮЧ (primary1[, primary2 [,...]]) |
УНІКАЛЬНІ (unique1[, unique2 [,...]]) |
НЕ NULL (notnull1[, notnull2 [,...]]) |
ЗОВНІШНІЙ КЛЮЧ [БЕЗ ІНДЕКСУ] (посилання1[, посилання2 [,...]]) Посилання НА таблиці foreigntable [(foreignfield1 [, foreignfield2 [,...]])]
[Увімкнуто КАСКАДНЕ ОНОВЛЕННЯ | УСТАНОВИТИ значення NULL]
[Увімкнуто КАСКАДНЕ ВИДАЛЕННЯ | УСТАНОВИТИ ЗНАЧЕННЯ NULL]}

Речення CONSTRAINT складається з таких частин:

Частина

Опис

ім'я

Ім'я обмеження, яке потрібно створити.

primary1, primary2

Ім'я поля або полів, які визначаються як первинний ключ.

unique1, unique2

Ім'я поля або полів, які визначаються як унікальний ключ.

notnull1, notnull2

Ім'я поля або полів, які обмежені, відмінне від Null-значення.

ref1, ref2

Ім'я поля або полів зовнішній ключ, які містять посилання на поля в іншій таблиці.

foreigntable

Ім'я підлегла таблиця, яка містить поле або поля, визначені параметром foreignfield.

foreignfield1, foreignfield2

Ім'я поля або полів у таблиці foreigntable, яке вказано в ref1, ref2. Можна пропустити це речення, якщо посилання вказує на поле первинного ключа таблиці foreigntable.


Зауваження

Використовуйте синтаксис обмеження для одного поля в реченні, яке визначає поле, оператора 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))

Розглянемо таке визначення зв'язку зовнішнього ключа таблиці замовлень «Orders», яке визначає зв’язок зовнішнього ключа, який містить посилання на первинний ключ таблиці клієнтів «Customers»:

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 означає, що в разі оновлення ідентифікатора клієнта (CustId) у таблиці «Customer» у таблиці замовлень «Orders» буде здійснено каскадне оновлення. Кожне замовлення, яке містить значення відповідного ідентифікатора клієнта, буде автоматично оновлено новим значенням. Речення ON DELETE CASCADE означає, що в разі видалення клієнта з таблиці «Customer» усі рядки в таблиці «Orders», які містять такий самий ідентифікатор клієнта, також буде видалено.

Розглянемо інше визначення таблиці «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 означає, що в разі оновлення ідентифікатора клієнта (CustId) в таблиці «Customer» відповідному зовнішньому ключу в таблиці «Orders» буде присвоєно значення NULL. Аналогічно, речення ON DELETE SET NULL означає, що в разі видалення клієнта з таблиці «Customer» усім відповідним зовнішнім ключам таблиці «Orders» буде автоматично присвоєно значення NULL.

Щоб заборонити автоматичне створення індексів для зовнішніх ключів, можна використати модифікатор NO INDEX. Ця форма визначення зовнішнього ключа має використовуватися лише у випадках частого повторення кінцевих значень індексу. Якщо значення в індексі зовнішнього ключа часто повторюються, використання індексу може бути менш ефективним, ніж звичайне сканування таблиці. Зберігання цього типу індексу під час вставлення та видалення рядків із таблиці знижує продуктивність і не є корисним.



Примітка : Застереження про машинний переклад: Цю статтю перекладено комп’ютерною системою без втручання людини. Корпорація Майкрософт пропонує таку послугу, щоб іншомовні користувачі могли дізнаватися про продукти, служби й технології Microsoft. Оскільки статтю перекладено за допомогою служби машинного перекладу, вона може містити смислові, синтаксичні або граматичні помилки.

Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо за відгук! Схоже, вам може стати в нагоді допомога одного з наших спеціалістів служби підтримки Office, з яким ми вас можемо з’єднати.

×