Omezení zahraničního klíče MySQL
Omezení zahraničního klíče MySQL
Omezení FOREIGN KEY
se používá k zabránění akcím, které by zničily propojení mezi tabulkami.
A FOREIGN KEY
je pole (nebo kolekce polí) v jedné tabulce, které odkazuje na pole PRIMARY KEY
v jiné tabulce.
Tabulka s cizím klíčem se nazývá podřízená tabulka a tabulka s primárním klíčem se nazývá odkazovaná nebo nadřazená tabulka.
Podívejte se na následující dvě tabulky:
Tabulka osob
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Tabulka objednávek
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Všimněte si, že sloupec "ID osoby" v tabulce "Objednávky" odkazuje na sloupec "ID osoby" v tabulce "Osoby".
Sloupec "ID osoby" v tabulce "Osoby" je PRIMARY KEY
v tabulce "Osoby".
Sloupec "ID osoby" v tabulce "Objednávky" je
FOREIGN KEY
v tabulce "Objednávky".
Omezení FOREIGN KEY
brání vložení neplatných dat do sloupce cizího klíče, protože to musí být jedna z hodnot obsažených v nadřazené tabulce.
CIZÍ KLÍČ na CREATE TABLE
Následující SQL vytvoří ve FOREIGN KEY
sloupci "PersonID" při vytvoření tabulky "Objednávky":
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Chcete-li povolit pojmenování FOREIGN KEY
omezení a definovat
FOREIGN KEY
omezení pro více sloupců, použijte následující syntaxi 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)
);
CIZÍ KLÍČ na ALTER TABLE
Chcete-li vytvořit FOREIGN KEY
omezení ve sloupci "PersonID", když je tabulka "Objednávky" již vytvořena, použijte následující SQL:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Chcete-li povolit pojmenování FOREIGN KEY
omezení a definovat
FOREIGN KEY
omezení pro více sloupců, použijte následující syntaxi SQL:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
ZRUŠTE ZAHRANIČNÍ KLÍČOVÉ omezení
Chcete-li zrušit FOREIGN KEY
omezení, použijte následující SQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;