sql >> Base de Datos >  >> RDS >> Mysql

Cómo deshabilitar la verificación de clave externa en MySQL

La verificación de clave externa en MySQL puede evitar que realice algunas actualizaciones de la base de datos en tablas que tienen restricciones de clave externa. En tales casos, puede deshabilitar temporalmente la verificación de clave externa en MySQL, realizar sus actualizaciones y habilitar la verificación de clave externa en MySQL después. Aquí se explica cómo deshabilitar la restricción de clave externa en MySQL.

Cómo deshabilitar la verificación de clave externa en MySQL

Estos son los pasos para deshabilitar la verificación de clave externa en MySQL.

Puede deshabilitar la verificación de clave externa en MySQL configurando la variable del sistema foreign_key_checks a 0.

SET foreign_key_checks = 0

De manera similar, puede habilitar la verificación de clave externa en MySQL configurando la variable del sistema foreign_key_check a 1

SET foreign_key_checks = 1

Sin embargo, tenga en cuenta que después de habilitar las verificaciones de claves externas, MySQL no volverá a validar los datos existentes que agregó después de deshabilitar la verificación de claves externas. Solo verificará las nuevas adiciones/actualizaciones a su base de datos.

Lectura adicional:Cómo crear una secuencia en MySQL

Veamos un ejemplo. Supongamos que tiene las siguientes dos tablas países y ciudades tal que ciudades tiene una columna de clave externa country_id que se refiere a country_id en países

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

Lectura adicional:Cómo comparar dos tablas en MySQL

Ahora intentemos insertar una fila en ciudades tabla sin mencionar el country_id valor de clave externa y obtendrá un error como se muestra a continuación.

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

Ahora permítanos deshabilitar la verificación de clave externa en MySQL e intente insertar la fila nuevamente.

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

Ahora habilitamos el control externo en MySQL

mysql> SET foreign_key_checks = 1;

Lectura adicional:Cómo obtener los datos del último mes en MySQL

Finalmente insertamos una fila correspondiente en países mesa.

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

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

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!