Perbedaan RESTRICT, CASCADE, SET NULL dan NO ACTION pada Foreign Key Options
Ketika membahas tentang database, sering kali kita menemukan bahwa terdapat dua atau lebih tabel yang saling berhubungan melalui relasi. Namun, masalah yang sering muncul adalah ketika kita mengubah salah satu tabel, pasangan datanya pada tabel lain bisa hilang.
Untuk mengatasi masalah ini, kita bisa menggunakan Foreign Key Options. Foreign Key Options ini digunakan untuk mengatur relasi antara dua tabel, terutama ketika menggunakan engine InnoDB pada MySQL atau MariaDB.
Foreign Key Options memiliki empat pilihan pengaturan, yaitu:
- RESTRICT: Pengaturan ini mencegah penghapusan atau perubahan baris data dalam tabel A jika masih terdapat relasi data di tabel B. InnoDB akan menolak perintah perubahan atau penghapusan tersebut.
- CASCADE: Dengan pengaturan ini, jika kita menghapus atau mengubah baris data dalam tabel A, maka baris yang sesuai dalam tabel B akan otomatis dihapus atau diubah juga.
- SET NULL: Pengaturan ini akan mengubah baris pada tabel B menjadi NULL pada kolom yang terelasi jika kita menghapus atau mengubah baris data dalam tabel A. Ini hanya bisa dilakukan jika kolom foreign key tidak diatur sebagai NOT NULL.
- NO ACTION: Dalam standar SQL, NO ACTION berarti tidak ada perubahan apapun yang dilakukan pada tabel anak jika data dalam salah satu tabel diubah.
4.94 / 169 rates