SQL ограничение внешнего ключа
SQL ограничение внешнего ключа
FOREIGN KEY в одной таблице указывает на другую таблицу первичного ключа.
Давайте используем пример, чтобы объяснить внешний ключ. Рассмотрим следующие две таблицы:
"Лица" таблица:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Заказы" таблица:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Обратите внимание, что "Заказы" столбец таблицы "p_id" точка столбец "лица" таблица "p_id".
Колонка "Лица" таблица "p_id" является "Лица" таблицы PRIMARY KEY.
колонка "Заказы" таблица "p_id" является "Заказы" таблица FOREIGN KEY.
Ограничение внешнего ключа используется для предотвращения повреждения связи между поведением таблицы.
Ограничение внешнего ключа также предотвращает незаконных данных в столбец внешнего ключа, он должен быть один, потому что он указывает на таблицу.
SQL ограничение внешнего ключа CREATE TABLE когда
Следующий SQL, когда "Заказы" таблица была создана, чтобы создать ограничение внешнего ключа на колонке "p_id":
MySQL:
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Для того, чтобы назвать ограничение внешнего ключа, а также определить множество столбец ограничение внешнего ключа, используйте следующий синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
SQL ограничение внешнего ключа ALTER TABLE при
Когда таблица "Заказы" был создан для столбцов создать ограничение внешнего ключа "p_id", пожалуйста, используйте следующий SQL:
MySQL / SQL Server / Oracle / MS Access:
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Для того, чтобы назвать ограничение внешнего ключа, а также определить множество столбец ограничение внешнего ключа, используйте следующий синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Отменить ограничение внешнего ключа
Чтобы удалить ограничение внешнего ключа, используйте следующий SQL:
MySQL:
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
DROP CONSTRAINT fk_PerOrders