SQL - Idegen kulcs
SQL Idegen kulcs:
Az idegen kulcs utal a másik táblázat elsődleges kulcsára. Az idegen kulcs megadása hasonló az elsődleges kulcshoz. A különbség mindössze annyi, hogy az idegen kulcsnál mindig meg kell adni, hogy az attribútum melyik másik tábla kulcsmezőjéhez kapcsolódik.
A "személyek" táblázat:
| személyek_azonosító | keresztnév | vezetéknév | cím | város |
| 1 | Péter | Kovács | Albert út 2 | Budapest |
| 2 | István | Tóth | Iskola út 34 | Debrecen |
| 3 | Viola | Kiss | Kiskörút út 12 | Balmazújváros |
| 4 | Aranka | Török | Széchenyi út 36 | Siófok |
A "Rendelések" táblázat:
| rendelés_azonosító | rendelés_szám | személy_azonosító |
| 1 | 23415 | 3 |
| 2 | 22341 | 2 |
| 3 | 20210 | 3 |
| 4 | 12340 | 2 |
| 5 | 85275 | 23 |
A "rendelések" táblában a rendelési azonosító utal a 'Személyek' tábla személyi azonosítójára. Az idegen kulcs megakadályozza, hogy érvénytelen adatokkal egészül ki a táblázat idegen kulcs oszlopa.
SQL idegen kulcs a új táblában:
MySQL:
CREATE TABLE rendelések
(
rendelések_azonosító int NOT NULL,
rendelésekszám int NOT NULL,
személyek_azonosító int,
PRIMARY KEY (rendelések_azonosító),
FOREIGN KEY (személyek_azonosító) REFERENCES személyek(személyek_azonosító)
)
SQL Server / Oracle / MS Access:
CREATE TABLE személyek
(
rendelések_azonosító int NOT NULL PRIMARY KEY,
rendelésekszám int NOT NULL,
személyek_azonosító int FOREIGN KEY REFERENCES személyek(személyek_azonosító)
)
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE személyek
(
rendelések_azonosító int NOT NULL,
rendelésekszám int NOT NULL,
személyek_azonosító int,
PRIMARY KEY (rendelések_azonosító),
CONSTRAINT fk_PerOrders FOREIGN KEY (személyek_azonosító)
REFERENCES személyek(személyek_azonosító)
)
SQL idegen kulcs változó táblában:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE személyek
ADD FOREIGN KEY (személyek_azonosító)
REFERENCES személyek(személyek_azonosító)
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE személyekADD CONSTRAINT fk_PerOrders
FOREIGN KEY (személyek_azonosító)
REFERENCES személyek(személyek_azonosító)