Ograniczenie FOREIGN KEY w SQL

Ograniczenie FOREIGN KEY w SQL

FOREIGN KEY w jednej tabeli wskazuje na PRIMARY KEY w innej tabeli.

Pozwólmy, że wyjaśnimy klucz obcy za pomocą przykładu. Oto dwie tabele:

Tabela "Persons":

Id_P Nazwisko Imię Adres Miasto
1 Adams John Oxford Street Londyn
2 Bush George Fifth Avenue Nowy Jork
3 Carter Thomas Changan Street Pekin

Tabela "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Proszę zauważyć, że kolumna "Id_P" w tabeli "Orders" wskazuje na kolumnę "Id_P" w tabeli "Persons".

Kolumna "Id_P" w tabeli "Persons" jest kluczem głównym w tabeli "Persons".

Kolumna "Id_P" w tabeli "Orders" jest kluczem obcym w tabeli "Orders".

FOREIGN KEY constraint jest używana do zapobiegania działaniom, które mogą zniszczyć połączenia między tabelami.

FOREIGN KEY constraint może również zapobiegać wprowadzaniu nielegalnych danych do kolumny klucza obcego, ponieważ musi to być wartość z jednej z tabel, do której odnosi się.

FOREIGN KEY Constraint na CREATE TABLE

Poniżej znajduje się SQL tworzący FOREIGN KEY dla kolumny "Id_P" w tabeli "Orders":

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

Jeśli chcesz nazwać ograniczenie FOREIGN KEY oraz zdefiniować ograniczenie FOREIGN KEY dla wielu kolumn, użyj poniższego składni SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

Ograniczenie FOREIGN KEY w SQL na ALTER TABLE

Jeśli chcesz utworzyć ograniczenie FOREIGN KEY dla kolumny "Id_P" w tabeli "Orders", która już istnieje, użyj poniższego SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

Jeśli chcesz nazwać ograniczenie FOREIGN KEY oraz zdefiniować ograniczenie FOREIGN KEY dla wielu kolumn, użyj poniższego składni SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

Unieważnienie ograniczenia FOREIGN KEY

Aby unieważnić ograniczenie FOREIGN KEY, użyj poniższego SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders