SQL FOREIGN KEY Kendala
KUNCI ASING di satu meja poin untuk PRIMARY KEY di meja lain.
Mari kita menggambarkan kunci asing dengan sebuah contoh. Lihatlah dua tabel berikut:
The "Persons" tabel:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
The "Orders" tabel:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Perhatikan bahwa "P_Id" kolom dalam "Orders" tabel poin ke "P_Id" kolom dalam "Persons" tabel.
The "P_Id" kolom dalam "Persons" tabel adalah PRIMARY KEY di "Persons" tabel.
The "P_Id" kolom dalam "Orders" tabel adalah FOREIGN KEY dalam "Orders" meja.
Kendala FOREIGN KEY digunakan untuk mencegah tindakan yang akan merusak hubungan antara tabel.
Kendala FOREIGN KEY juga mencegah data yang tidak valid dari yang dimasukkan ke dalam kolom kunci asing, karena itu harus menjadi salah satu nilai yang terkandung dalam tabel ini menunjuk ke.
SQL FOREIGN KEY Kendala CREATE TABLE
SQL berikut membuat KEY FOREIGN pada "P_Id" kolom ketika "Orders" tabel dibuat:
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Untuk memungkinkan penamaan kendala FOREIGN KEY, dan untuk mendefinisikan kendala FOREIGN KEY pada beberapa kolom, menggunakan sintaks SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
SQL FOREIGN KEY Kendala pada ALTER TABLE
Untuk membuat kendala FOREIGN KEY pada "P_Id" kolom ketika "Orders" tabel sudah dibuat, gunakan SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Untuk memungkinkan penamaan kendala FOREIGN KEY, dan untuk mendefinisikan kendala FOREIGN KEY pada beberapa kolom, menggunakan sintaks SQL berikut:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Untuk DROP Kendala FOREIGN KEY
Untuk menjatuhkan kendala FOREIGN KEY, gunakan SQL berikut:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders