Створення і зміна обмежень primary key

При створенні таблиці в її визначенні можна вказати одне обмеження PRIMARY KEY. Якщо таблиця вже існує, обмеження PRIMARY KEY може бути додано лише в тому випадку, якщо для таблиці ще не визначено жодного такого обмеження. У таблиці може бути тільки одне обмеження PRIMARY KEY.

Якщо обмеження PRIMARY KEY вже існує, його можна змінити або видалити. Наприклад, може знадобитися, щоб обмеження PRIMARY KEY посилалося на інші стовпці, або потрібно зміна порядку стовпців, імені індексу, параметрів кластеризації або коефіцієнта заповнення. Але довжину стовпчика, визначеного з обмеженням PRIMARY KEY, змінити не можна.

Щоб змінити обмеження PRIMARY KEY, необхідно спочатку видалити існуюче обмеження PRIMARY KEY, а потім створити нове з іншим визначенням.

Якщо обмеження PRIMARY KEY додається до існуючого одну або стовпцях таблиці, компонент Database Engine перевіряє дані та метадані цих стовпців, щоб перевірити їх відповідність наступним правилам.

Стовпці не повинні допускати значень NULL.

Стовпці обмеження PRIMARY KEY, зазначеного при створенні таблиці, неявно перетворюються в NOT NULL. Розріджений стовпець можна використовувати як частину первинного ключа, так як розріджені стовпці повинні допускати значення NULL.

У них не повинно бути повторюваних значень.

Якщо обмеження PRIMARY KEY додається до колонку, який містить повторювані значення чи допускає значення NULL, компонент Database Engine повертає помилку і обмеження не створюється.

Обмеження PRIMARY KEY не може бути додано до стовпців, що порушує перераховані правила.

Компонент Database Engine автоматично створює унікальний індекс, щоб гарантувати унікальність обмеження PRIMARY KEY. Якщо для таблиці не існує кластерізованний індекс і явно не вказано некластерізованний, то для обмеження PRIMARY KEY створюється унікальний кластерізованний індекс.

Обмеження PRIMARY KEY не може бути видалено в наступних випадках.

Якщо на нього посилається обмеження FOREIGN KEY з іншої таблиці. Спочатку має бути видалено обмеження FOREIGN KEY.

До таблиці застосований індекс PRIMARY XML.

Створення обмеження PRIMARY KEY при створенні таблиці

Створення обмеження PRIMARY KEY в існуючій таблиці