Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So deaktivieren Sie die Fremdschlüsselprüfung in MySQL

Die Fremdschlüsselprüfung in MySQL kann Sie daran hindern, einige Datenbankaktualisierungen an Tabellen vorzunehmen, die Fremdschlüsseleinschränkungen unterliegen. In solchen Fällen können Sie die Fremdschlüsselprüfung in MySQL vorübergehend deaktivieren, Ihre Aktualisierungen vornehmen und anschließend die Fremdschlüsselprüfung in MySQL aktivieren. So deaktivieren Sie die Fremdschlüsselbeschränkung in MySQL.

So deaktivieren Sie die Fremdschlüsselprüfung in MySQL

Hier sind die Schritte zum Deaktivieren der Fremdschlüsselprüfung in MySQL.

Sie können die Fremdschlüsselprüfung in MySQL deaktivieren, indem Sie die Systemvariable foreign_key_checks setzen auf 0.

SET foreign_key_checks = 0

Auf ähnliche Weise können Sie die Fremdschlüsselprüfung in MySQL aktivieren, indem Sie die Systemvariable foreign_key_check setzen bis 1

SET foreign_key_checks = 1

Bitte beachten Sie jedoch, dass MySQL Ihre vorhandenen Daten, die Sie nach dem Deaktivieren der Fremdschlüsselprüfung hinzugefügt haben, nicht erneut validiert, nachdem Sie die Fremdschlüsselprüfung aktiviert haben. Es wird nur alle neuen Ergänzungen/Aktualisierungen Ihrer Datenbank prüfen.

Bonuslektüre:So erstellen Sie eine Sequenz in MySQL

Sehen wir uns ein Beispiel an. Nehmen wir an, Sie haben die folgenden zwei Tabellen Länder und Städte so dass Städte hat eine Fremdschlüsselspalte country_id das bezieht sich auf country_id in Ländern

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)
);

Bonuslektüre:Wie man zwei Tabellen in MySQL vergleicht

Versuchen wir nun, eine Zeile in Städte einzufügen Tabelle ohne Angabe der country_id Fremdschlüsselwert und Sie erhalten eine Fehlermeldung wie unten gezeigt.

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`))

Lassen Sie uns nun die Fremdschlüsselprüfung in MySQL deaktivieren und versuchen, die Zeile erneut einzufügen.

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 |
+---------+-----------+------------+

Jetzt aktivieren wir die Fremdprüfung in MySQL

mysql> SET foreign_key_checks = 1;

Bonuslektüre:So erhalten Sie die Daten des letzten Monats in MySQL

Schließlich fügen wir eine entsprechende Zeile in Länder ein Tabelle.

mysql> INSERT INTO countries(country_id, country_name)
       VALUES(1,'USA');

mysql> select * from countries;
+------------+--------------+
| country_id | country_name |
+------------+--------------+
|          1 | USA          |
+------------+--------------+

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!