Pemeriksaan Kunci Asing di MySQL dapat mencegah Anda membuat beberapa pembaruan basis data ke tabel yang memiliki batasan kunci asing. Dalam kasus seperti itu, Anda dapat menonaktifkan sementara pemeriksaan kunci asing di MySQL, melakukan pembaruan, dan mengaktifkan pemeriksaan kunci asing di MySQL setelahnya. Berikut cara menonaktifkan batasan kunci asing di MySQL.
Cara Menonaktifkan Pemeriksaan Kunci Asing di MySQL
Berikut adalah langkah-langkah untuk menonaktifkan pemeriksaan kunci asing di MySQL.
Anda dapat menonaktifkan pemeriksaan kunci asing di MySQL dengan mengatur variabel sistem foreign_key_checks ke 0.
SET foreign_key_checks = 0
Demikian pula, Anda dapat mengaktifkan pemeriksaan kunci asing di MySQL dengan mengatur variabel sistem foreign_key_check ke 1
SET foreign_key_checks = 1
Namun, harap dicatat, setelah Anda mengaktifkan pemeriksaan kunci asing, MySQL tidak akan memvalidasi ulang data Anda yang sudah ada yang Anda tambahkan setelah menonaktifkan pemeriksaan kunci asing. Ini hanya akan memeriksa penambahan/pembaruan baru ke database Anda.
Bonus Baca :Cara Membuat Urutan di MySQL
Mari kita lihat sebuah contoh. Katakanlah Anda memiliki dua tabel berikut negara dan kota sedemikian rupa sehingga kota memiliki kolom kunci asing country_id yang mengacu pada id_negara di negara
CREATE TABLE countries( country_id INT PRIMARY KEY AUTO_INCREMENT, country_name VARCHAR(255) NOT NULL );
CREATE TABLE cities( city_id INT PRIMARY KEY AUTO_INCREMENT, city_name VARCHAR(255), country_id INT, FOREIGN KEY(country_id) REFERENCES countries(country_id) );
Bonus Baca :Cara Membandingkan Dua Tabel di MySQL
Sekarang mari kita coba menyisipkan baris di kota tabel tanpa menyebutkan country_id nilai kunci asing dan Anda akan mendapatkan kesalahan seperti yang ditunjukkan di bawah ini.
mysql> INSERT INTO cities(city_name, country_id) VALUES('NYC',1); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`sample`.`cities`, CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `countries` (`country_id`))
Sekarang mari kita nonaktifkan pemeriksaan kunci asing di MySQL dan coba masukkan baris lagi.
mysql> SET foreign_key_checks = 0; mysql> INSERT INTO cities(city_name, country_id) VALUES('NYC',1); mysql> select * from cities; +---------+-----------+------------+ | city_id | city_name | country_id | +---------+-----------+------------+ | 2 | NYC | 1 | +---------+-----------+------------+
Sekarang kami mengaktifkan cek asing di MySQL
mysql> SET foreign_key_checks = 1;
Bonus Baca :Cara Mendapatkan Data Satu Bulan Terakhir di MySQL
Kami akhirnya menyisipkan baris yang sesuai di negara tabel.
mysql> INSERT INTO countries(country_id, country_name) VALUES(1,'USA'); mysql> select * from countries; +------------+--------------+ | country_id | country_name | +------------+--------------+ | 1 | USA | +------------+--------------+
Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!