Batasan KUNCI ASING MySQL
Batasan KUNCI ASING MySQL
Batasan FOREIGN KEY
digunakan untuk mencegah tindakan yang akan menghancurkan tautan antar tabel.
A FOREIGN KEY
adalah bidang (atau kumpulan bidang) dalam satu tabel, yang merujuk ke PRIMARY KEY
dalam tabel lain.
Tabel dengan kunci asing disebut tabel anak, dan tabel dengan kunci utama disebut tabel referensi atau tabel induk.
Perhatikan dua tabel berikut ini:
Meja Orang
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Tabel Pesanan
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Perhatikan bahwa kolom "PersonID" di tabel "Pesanan" menunjuk ke kolom "PersonID" di tabel "Orang".
Kolom "PersonID" di tabel "Orang" adalah PRIMARY KEY
di tabel "Orang".
Kolom "PersonID" di tabel "Pesanan" adalah
FOREIGN KEY
di tabel "Pesanan".
Batasan FOREIGN KEY
mencegah data yang tidak valid dimasukkan ke dalam kolom kunci asing, karena itu harus menjadi salah satu nilai yang terkandung dalam tabel induk.
KUNCI ASING pada CREATE TABLE
SQL berikut membuat FOREIGN KEY
pada kolom "PersonID" saat tabel "Pesanan" dibuat:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Untuk mengizinkan penamaan FOREIGN KEY
batasan, dan untuk mendefinisikan
FOREIGN KEY
batasan pada beberapa kolom, gunakan sintaks SQL berikut:
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)
);
KUNCI ASING di ALTER TABLE
Untuk membuat FOREIGN KEY
batasan pada kolom "PersonID" saat tabel "Pesanan" sudah dibuat, gunakan SQL berikut:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Untuk mengizinkan penamaan FOREIGN KEY
batasan, dan untuk mendefinisikan
FOREIGN KEY
batasan pada beberapa kolom, gunakan sintaks SQL berikut:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
JATUHKAN Hambatan KUNCI ASING
Untuk FOREIGN KEY
menghilangkan batasan, gunakan SQL berikut:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;