Ograniczenie FOREIGN KEY w SQL
- Poprzednia strona Główny klucz SQL
- Następna strona SQL Check
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
- Poprzednia strona Główny klucz SQL
- Następna strona SQL Check