Foreign Key

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:

MySQL:

SQL Server / Oracle / MS Access: