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

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

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

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

  • додаванням до існуючої таблиці за умовою, що обмеження FOREIGN KEYпов'язане з існуючим обмеженнямPRIMARY KEYабоUNIQUEз іншої (або цієї ж) таблиці.

Створені обмеження FOREIGNKEYдозволяється модифікувати й видаляти. Наприклад, при бажанні можна замінити стовпці, на які посилається обмеженняFOREIGNKEY. Довжину стовпця, для якого визнечене обмеженняFOREIGN KEY, змінити не можна.

Щоб модифікувати обмеження FOREIGN KEYза допомогою Transact-SQL, спочатку варто видалити існуюче визначення обмеженняFOREIGN KEY, а потім створити нове визначення.

Наступний оператор CREATE TABLEстворює таблицюTable1і визначає для стовпцяCol_2обмеженняFOREIGN KEY, що посилається на стовпецьEmployee1, який є в таблиціEmployeesстовпцем з первинним ключем:

CREATE TABLE Tablel

(

Col_1 INT PRIMARY KEY,

Col_2 INT REFERENCES Employees(Employee1)

)

Це ж обмеження можна створити, визначивши його на рівні таблиці:

CREATE TABLE Tablel

(

Col_l INT PRIMARY KEY,

Col_2 INT,

CONSTRAINT Col_2_fk FOREIGN KEY (Col_2) REFERENCES Employees (Employeel)

)

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

ALTER TABLE Tablel

ADD CONSTRAINT col_2_fk FOREIGN KEY (Col_2)

REFERENCES Employees (Employeel)

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

Обмеження check

Обмеження CHECK, забезпечують доменну цілісність шляхом обмеження значень, які дозволено вводити в стовпець. Цим вони схожі на обмеженняFOREIGNKEY. Відмінність між ними полягає в способі визначення припустимих значень. ОбмеженняFOREIGNKEYодержують список припустимих значень із іншої таблиці, а обмеженняCHECKвизначають їх на основі логічного виразу, у яке не входять дані з іншого стовпця. Наприклад, можна обмежити діапазон значень стовпця з відомостями про зарплату, створивши обмеженняCHECK, що допускає тільки значення від $15000 до $100000. Ця функція запобігає уведенню значень, які виходять за межі нормального діапазону зарплати. Можна створити обмеженняCHECKза допомогою будь-якого логічного виразу, що повертаєTRUEабоFALSEзалежно від використовуваного логічного оператора. От як виглядає логічний вираз, що допускає тільки значення з інтервалу $15 000 - $100 000:

salary >= 15000 AND salary <= 100000

До одного стовпця дозволяється застосувати кілька обмежень CHECK, які перевіряються в порядку їхнього створення. Крім того, можна застосувати одне обмеженняCHECKдо декількох стовпців, якщо створити його на рівні таблиці. Наприклад, засобами обмеженняCHECK, певного для декількох стовпців, вдається підтвердити, що в будь-якому рядку, де значення полякраїнадорівнює “USA”, у полештатвнесене значення, що складається із двох символів. Ця функція дозволяє перевірити в одному місці кілька умов.