Ograniczenie klucza obcego MySQL
Ograniczenie klucza obcego MySQL
Ograniczenie FOREIGN KEY
służy do zapobiegania akcjom, które zniszczyłyby połączenia między tabelami.
A FOREIGN KEY
to pole (lub zbiór pól) w jednej tabeli, które odwołuje się do pola PRIMARY KEY
w innej tabeli.
Tabela z kluczem obcym nazywana jest tabelą podrzędną, a tabela z kluczem podstawowym nazywana jest tabelą odniesienia lub tabelą nadrzędną.
Spójrz na następujące dwie tabele:
Tabela osób
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Tabela zamówień
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Zwróć uwagę, że kolumna „PersonID” w tabeli „Zamówienia” wskazuje kolumnę „PersonID” w tabeli „Osoby”.
Kolumna „PersonID” w tabeli „Osoby” to kolumna w tabeli PRIMARY KEY
„Osoby”.
Kolumna „PersonID” w tabeli „Zamówienia” znajduje się
FOREIGN KEY
w tabeli „Zamówienia”.
Ograniczenie FOREIGN KEY
zapobiega wstawianiu nieprawidłowych danych do kolumny klucza obcego, ponieważ musi to być jedna z wartości zawartych w tabeli nadrzędnej.
KLUCZ OBCY na CREATE TABLE
Poniższy kod SQL tworzy FOREIGN KEY
kolumnę „PersonID” podczas tworzenia tabeli „Zamówienia”:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Aby zezwolić na nazywanie FOREIGN KEY
ograniczenia i zdefiniować
FOREIGN KEY
ograniczenie na wielu kolumnach, użyj następującej składni 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)
);
KLUCZ OBCY NA TABELI ALTER
Aby utworzyć FOREIGN KEY
ograniczenie dla kolumny „PersonID”, gdy tabela „Orders” jest już utworzona, użyj następującego kodu SQL:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Aby zezwolić na nazywanie FOREIGN KEY
ograniczenia i zdefiniować
FOREIGN KEY
ograniczenie na wielu kolumnach, użyj następującej składni SQL:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
UPUŚĆ OGRANICZENIE KLUCZA OBCEGO
Aby usunąć FOREIGN KEY
ograniczenie, użyj następującego kodu SQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;