SQL FOREIGN KEY Обмеження
SQL Обмеження FOREIGN KEY
Обмеження FOREIGN KEY
використовується для запобігання діям, які можуть зруйнувати зв’язки між таблицями.
FOREIGN KEY
(зовнішній ключ) – це поле (або набір полів) в одній таблиці, яке посилається на PRIMARY KEY
(первинний ключ) в іншій таблиці.
Таблиця із зовнішнім ключем називається дочірньою таблицею, а таблиця з первинним ключем називається батьківською таблицею.
Погляньте на наступні дві таблиці:
Таблиця осіб
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Таблиця замовлень
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Зверніть увагу, що стовпець "PersonID" у таблиці "Orders" вказує на стовпець "PersonID" у таблиці "Persons".
Стовпець "PersonID" у таблиці "Persons" є PRIMARY KEY
у таблиці "Persons".
Стовпець "PersonID" у таблиці "Orders" є FOREIGN KEY
у таблиці "Orders".
Обмеження FOREIGN KEY
запобігає вставленню недійсних даних у стовпець зовнішнього ключа, оскільки це має бути одне зі значень, що містяться в батьківській таблиці.
SQL FOREIGN KEY на CREATE TABLE
Наступний SQL створює FOREIGN KEY
у стовпці "PersonID" під час створення таблиці "Orders":
MySQL:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
Щоб дозволити іменування обмеження FOREIGN KEY
і для визначення обмеження FOREIGN KEY
для кількох стовпців, використовуйте наступний синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
SQL FOREIGN KEY на ALTER TABLE
Щоб створити обмеження FOREIGN KEY
для стовпця "PersonID" коли таблицю "Orders" уже створено, використовуйте такий SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Щоб дозволити іменування обмеження FOREIGN KEY
і для визначення обмеження FOREIGN KEY
для кількох стовпців, використовуйте наступний синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
Видалити FOREIGN KEY обмеження
Щоб видалити обмеження FOREIGN KEY
використовуйте такий SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;