Foreign Key Check in MySQL kan voorkomen dat u sommige database-updates aanbrengt in tabellen met beperkingen voor externe sleutels. In dergelijke gevallen kunt u de buitenlandse sleutelcontrole tijdelijk uitschakelen in MySQL, uw updates uitvoeren en daarna de buitenlandse sleutelcontrole inschakelen in MySQL. Hier leest u hoe u de beperking van externe sleutels in MySQL uitschakelt.
Hoe u Foreign Key Check in MySQL uitschakelt
Hier zijn de stappen om het controleren van buitenlandse sleutels in MySQL uit te schakelen.
U kunt de buitenlandse sleutelcontrole in MySQL uitschakelen door de systeemvariabele foreign_key_checks in te stellen naar 0.
SET foreign_key_checks = 0
Op dezelfde manier kunt u de externe sleutelcontrole in MySQL inschakelen door de systeemvariabele foreign_key_check in te stellen naar 1
SET foreign_key_checks = 1
Houd er echter rekening mee dat MySQL uw bestaande gegevens die u hebt toegevoegd na het uitschakelen van de externe-sleutelcontrole niet opnieuw zal valideren nadat u controles van buitenlandse sleutels heeft ingeschakeld. Het controleert alleen nieuwe toevoegingen/updates aan uw database.
Bonus Lezen:Hoe maak je een reeks in MySQL
Laten we een voorbeeld bekijken. Stel dat u de volgende twee tabellen landen . heeft en steden zodat steden heeft een externe sleutelkolom country_id dat verwijst naar country_id in landen
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 lezen:twee tabellen vergelijken in MySQL
Laten we nu proberen een rij in te voegen in steden tabel zonder de country_id . te vermelden waarde voor een externe sleutel en u krijgt een foutmelding zoals hieronder weergegeven.
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`))
Laten we nu de buitenlandse sleutelcontrole in MySQL uitschakelen en de rij opnieuw proberen in te voegen.
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 | +---------+-----------+------------+
Nu schakelen we buitenlandse cheques in MySQL in
mysql> SET foreign_key_checks = 1;
Bonus lezen:hoe u gegevens van de laatste maand in MySQL kunt krijgen
We voegen ten slotte een overeenkomstige rij in landen tafel.
mysql> INSERT INTO countries(country_id, country_name) VALUES(1,'USA'); mysql> select * from countries; +------------+--------------+ | country_id | country_name | +------------+--------------+ | 1 | USA | +------------+--------------+
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!