FOREIGN KEY е ключ, използван за свързване на две таблици. FOREIGN KEY е поле (или колекция от полета) в една таблица, която се отнася до PRIMARY KEY в друга таблица. Таблицата, съдържаща foreign key, се нарича дъщерна таблица, а таблицата, съдържаща другият ключ, се нарича таблица с референтни или родителски права. Погледнете следните две таблици:
Таблица „Persons“:
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Таблица „Orders“:
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 се използва за предотвратяване на действия, които биха унищожили връзките между таблиците. Ограничението на FOREIGN KEY също така предотвратява вмъкването на невалидни данни в колоната за чужди ключове, тъй като трябва да бъде една от стойностите, съдържащи се в таблицата, която тя посочва.
SQL FOREIGN KEY на CREATE TABLE
Следният SQL създава FOREIGN KEY в колоната „PersonID“, когато е създадена таблицата „Orders“:
MySQL:
SQL Server / Oracle / MS Access:
За да позволите именуването на ограничения на FOREIGN KEY и да дефинирате ограничение на FOREIGN KEY на няколко колони, използвайте следния SQL синтаксис:
MySQL / SQL Server / Oracle / MS Access:
SQL FOREIGN KEY на ALTER TABLE
За да създадете ограничения на FOREIGN KEY в колоната „PersonID“, когато таблицата „Orders“ вече е създадена, използвайте следния SQL:
MySQL / SQL Server / Oracle / MS Access:
За да позволите именуването на ограничения на FOREIGN KEY и да дефинирате ограничение на FOREIGN KEY на няколко колони, използвайте следния SQL синтаксис:
MySQL / SQL Server / Oracle / MS Access:
Премахване на FOREIGN KEY
За да премахнете ограничението FOREIGN KEY, използвайте следния SQL: