Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Обмеження primary key

У таблиці звичайно є стовпець (або комбінація стовпців), значення яких унікально ідентифікують кожний рядок таблиці. Цей стовпець (або стовпці) називаються первинним ключем таблиці і забезпечує цілісність сутностей таблиці. Можна створити первинний ключ, визначивши обмеження PRIMARYKEYпри створенні або зміні таблиці. У таблиці може бути тільки одне обмеженняPRIMARYKEY, причому стовпець, що бере участь в обмеженні, не повинен допускати порожніх значень. Оскільки обмеженняPRIMARYKEYгарантують унікальність даних, вони часто визначаються як стовпці з ідентифікатором. Коли в таблиці наявні певні обмеженняPRIMARYKEY, SQL Server 2000 забезпечує унікальність даних, створюючи унікальний індекс для стовпців первинного ключа. Цей індекс також забезпечує швидкий доступ до даних при використанні первинного ключа в запитах.

Якщо обмеження PRIMARYKEYвизначене для декількох стовпців, то в одному стовпці значення можуть повторюватися, але кожна комбінація значень всіх стовпців, які входять у визначення обмеженняPRIMARYKEY, повинна бути унікальною.

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

Обмеження PRIMARYKEYстворюють одним з наступних способів:

  • під час створення таблиці (у складі визначення таблиці);

  • додаючи обмеження до існуючої таблиці, якщо немає іншого обмеження PRIMARYKEY.

Існуюче обмеження PRIMARYKEYможна модифікувати або видалити. Наприклад, в обмеженніPRIMARYKEYпри бажанні можна змінити стовпці, на які посилається обмеження, порядок стовпців, ім'я індексу, ознаку кластерізації або коефіцієнт заповнення. Змінити довжину стовпця, для якого певне обмеженняPRIMARYKEY, не можна.

Щоб модифікувати обмеження PRIMARYKEYза допомогою Transact-SQL, спочатку варто видалити існуюче визначення обмеженняPRIMARYKEY, а потім створити нове визначення. Наступний операторCREATETABLEстворює таблицюTable1і визначає в якості її первинного ключа стовпецьCol_1:

CREATE TABLE Table1

(

Col_1 INT PRIMARY KEY,

Col_2 VARCHAR(30)

)

Tе ж саме обмеження визначають за допомогою визначення PRIMARY KEY на рівні таблиці:

CREATE TABLE Table1

(

Col_l INT.

Col_2 VARCHAR(30),

CONSTRAINT table_pk PRIMARY KEY (Col_l)

)

Ще один спосіб - додати обмеження PRIMARY KEY до існуючої таблиці за допомогою оператора ALTER TABLE:

ALTER TABLE Tablel

ADD CONSTRAINT table_pk PRIMARY KEY (Col_1)

Коли до існуючого стовпця (або стовпців) таблиці додається обмеження PRIMARY KEY, SQL Server 2000 перевіряє наявні в стовпцях дані, щоб гарантувати їхню відповідність правилам, які діють для первинних ключів:

  • відсутність порожніх значень;

  • відсутність повторюваних значень.

Якщо обмеження PRIMARYKEYдодається до стовпця, у якому є повторювані або порожні значення, SQL Server повертає помилку й не додає обмеження. Неможливо додати обмеженняPRIMARYKEYз порушенням вищевказаних правил. SQL Server автоматично створює унікальний індекс, щоб забезпечити відповідність вимозі унікальності, що висуває обмеженняPRIMARYKEY.

Увага!Неможливо видалити обмеженняPRIMARYKEY, якщо на нього посилається обмеженняFOREIGNKEYз іншої таблиці. Спочатку необхідно видалити обмеженняFOREIGNKEY.