Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

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

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

Примітка.: Обробник баз даних Microsoft Access не підтримує використання CONSTRAINT або будь-яких інших інструкцій DDL з іншими базами даних. У такому разі слід використовувати методи DAO Create.

Синтаксис

Обмеження в одному полі:

CONSTRAINT ім’я {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES підлегла_таблиця [(підлегле_поле1; підлегле_поле2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

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

CONSTRAINT ім’я
{PRIMARY KEY (головний_елемент1[; головний_елемент2 [; ...]]) |
UNIQUE (унікальне_значення1[; унікальне_значення2 [; ...]]) |
NOT NULL (не_Null-значення1[; не_Null-значення2 [; ...]]) |
FOREIGN KEY [NO INDEX] (посилання1[; посилання2 [; ...]]) REFERENCES підлегла_таблиця [(підлегле_поле1 [; підлегле_поле2 [; ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

У таблиці нижче наведено частини речення CONSTRAINT.

Частина

Опис

ім’я

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

головний_елемент1, головний_елемент2

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

унікальне_значення1, унікальне_значення2

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

не_Null-значення1, не_Null-значення2

Імена полів, у яких заборонено використовувати Null-значення.

посилання1, посилання2

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

підлегла_таблиця

Ім'я підлегла таблиця, що містить поле або поля, указані підлеглем.

підлегле_поле1, підлегле_поле2

Імена полів у підлеглій таблиці, визначеній в аргументі посилання1, посилання2. Це речення можна не використовувати, якщо поле, на яке посилаються, – це первинний ключ підлеглої таблиці.


Примітки

У реченні визначення поля інструкції ALTER TABLE або CREATE TABLE можна застосувати синтаксис обмеження в одному полі, за яким слід указати специфікацію типу даних поля.

Якщо ви використовуєте зарезервоване слово CONSTRAINT за межами речення визначення поля інструкції ALTER TABLE або CREATE TABLE, слід застосувати синтаксис обмеження в кількох полях.

Речення CONSTRAINT дає змогу призначити поле як обмеження одного з таких типів:

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

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

    Примітка.: Не встановлюйте обмеження PRIMARY KEY у таблиці, яка вже містить первинний ключ. У такому разі з’явиться повідомлення про помилку.

  • За допомогою зарезервованих слів UNIQUE поле можна призначити як зовнішній ключ. Якщо первинний ключ підлеглої таблиці складається з кількох полів, слід використовувати визначення обмеження в кількох полях, у якому вказано всі поля з посиланням, ім’я підлеглої таблиці та імена полів, на які є посилання в цій таблиці (у тому ж порядку, у якому вказано поля з посиланням). Якщо поля, на які є посилання, збігаються з первинним ключем підлеглої таблиці, їх указувати не потрібно. За замовчуванням обробник баз даних діє так, якщо первинний ключ підлеглої таблиці – це поля, на які є посилання.

    Зовнішній ключ блокує виконання завдань визначення, коли змінюється значення відповідного первинного ключа.

  • Дії, які потрібно виконувати в підлеглій таблиці, можна визначити на основі відповідної дії з первинним ключем таблиці, у якій визначено речення CONSTRAINT. Наприклад, розгляньте таке визначення таблиці "Клієнти":

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

Розгляньте визначення таблиці "Замовлення" нижче, у якому замість дії CASCADE використовується дія SET NULL.

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) оновлюється в таблиці "Клієнти", відповідному значенню зовнішнього ключа в таблиці "Замовлення" автоматично встановлюється NULL-значення. Аналогічно, речення ON DELETE SET NULL означає, що якщо користувача видалено з таблиці "Клієнти", усім відповідним зовнішнім ключам у таблиці "Замовлення" автоматично встановлюється NULL-значення.

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



Потрібна додаткова довідка?

Потрібні додаткові параметри?

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

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

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

×