Ограничение ВНЕШНЕГО КЛЮЧА MySQL
Ограничение ВНЕШНЕГО КЛЮЧА MySQL
Ограничение FOREIGN KEY
используется для предотвращения действий, которые могут разрушить связи между таблицами.
A 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» в таблице «Заказы» находится
FOREIGN KEY
в таблице «Заказы».
Ограничение FOREIGN KEY
предотвращает вставку недопустимых данных в столбец внешнего ключа, поскольку это должно быть одно из значений, содержащихся в родительской таблице.
ВНЕШНИЙ КЛЮЧ на CREATE TABLE
Следующий SQL создает FOREIGN KEY
столбец «PersonID» при создании таблицы «Заказы»:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Чтобы разрешить именование FOREIGN KEY
ограничения и определить
FOREIGN KEY
ограничение для нескольких столбцов, используйте следующий синтаксис SQL:
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)
);
ВНЕШНИЙ КЛЮЧ на ALTER TABLE
Чтобы создать FOREIGN KEY
ограничение для столбца «PersonID», когда таблица «Заказы» уже создана, используйте следующий SQL:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Чтобы разрешить именование FOREIGN KEY
ограничения и определить
FOREIGN KEY
ограничение для нескольких столбцов, используйте следующий синтаксис SQL:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
УДАЛИТЬ ВНЕШНИЙ КЛЮЧ Ограничение
Чтобы удалить FOREIGN KEY
ограничение, используйте следующий SQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;