Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como desativar a verificação de chave estrangeira no MySQL


A Verificação de Chave Estrangeira no MySQL pode impedir que você faça algumas atualizações de banco de dados em tabelas que tenham restrições de chave estrangeira. Nesses casos, você pode desabilitar temporariamente a verificação de chave estrangeira no MySQL, fazer suas atualizações e habilitar a verificação de chave estrangeira no MySQL posteriormente. Veja como desabilitar a restrição de chave estrangeira no MySQL.


Como desativar a verificação de chave estrangeira no MySQL


Aqui estão as etapas para desabilitar a verificação de chave estrangeira no MySQL.

Você pode desabilitar a verificação de chave estrangeira no MySQL definindo a variável de sistema foreign_key_checks para 0.
SET foreign_key_checks = 0

Da mesma forma, você pode habilitar a verificação de chave estrangeira no MySQL definindo a variável de sistema foreign_key_check para 1
SET foreign_key_checks = 1

No entanto, observe que, depois de habilitar as verificações de chave estrangeira, o MySQL não revalidará seus dados existentes que você adicionou após desabilitar a verificação de chave estrangeira. Ele apenas verificará quaisquer novas adições/atualizações em seu banco de dados.

Bônus de leitura:Como criar sequência no MySQL

Vamos ver um exemplo. Digamos que você tenha as duas tabelas a seguir países e cidades de modo que cidades tem uma coluna de chave estrangeira country_id que se refere a country_id em 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)
);



Bônus de leitura:Como comparar duas tabelas no MySQL



Agora vamos tentar inserir uma linha em cidades tabela sem mencionar o country_id valor de chave estrangeira e você receberá um erro conforme mostrado abaixo.
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`))

Agora vamos desabilitar a verificação de chave estrangeira no MySQL e tentar inserir a linha novamente.
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 |
+---------+-----------+------------+

Agora habilitamos a verificação estrangeira no MySQL
mysql> SET foreign_key_checks = 1;


Bônus de leitura:Como obter dados do último mês no MySQL

Finalmente, inserimos uma linha correspondente em países tabela.
mysql> INSERT INTO countries(country_id, country_name)
       VALUES(1,'USA');

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

O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!