sql >> Database >  >> RDS >> Mysql

Hoe u Foreign Key Check in MySQL uitschakelt?

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!

  1. Hoe de waarden van identiteitskolommen programmatisch te wijzigen?

  2. Resultatencache

  3. Hoe DATETIME casten als een DATE in mysql?

  4. Oracle JDeveloper 12c gebruiken met Oracle Database 12c op Oracle Cloud Platform, deel 1