Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да деактивирате проверката на чужд ключ в MySQL

Проверката на външния ключ в MySQL може да ви попречи да правите някои актуализации на база данни на таблици, които имат ограничения за външни ключове. В такива случаи можете временно да деактивирате проверката на външния ключ в MySQL, да направите своите актуализации и да активирате проверката на външни ключове в MySQL след това. Ето как да деактивирате ограничаването на външния ключ в MySQL.

Как да деактивирате проверката на чужд ключ в MySQL

Ето стъпките за деактивиране на проверката на външния ключ в MySQL.

Можете да деактивирате проверката на външния ключ в MySQL, като зададете системната променлива foreign_key_checks до 0.

SET foreign_key_checks = 0

По същия начин можете да активирате проверката на външния ключ в MySQL, като зададете системната променлива foreign_key_check до 1

SET foreign_key_checks = 1

Въпреки това, моля, имайте предвид, че след като активирате проверките на външни ключове, MySQL няма да потвърди повторно вашите съществуващи данни, които сте добавили след деактивиране на проверката на външния ключ. Той ще проверява само всички нови допълнения/актуализации към вашата база данни.

Бонус четене:Как да създадете последователност в MySQL

Нека разгледаме един пример. Да приемем, че имате следните две таблици държави и градове така че градове има колона с външен ключ country_id което се отнася до country_id в държави

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

Бонус четене:Как да сравним две таблици в MySQL

Сега нека опитаме да вмъкнем ред в градове таблица без да се споменава country_id стойност на външен ключ и ще получите грешка, както е показано по-долу.

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

Сега нека деактивираме проверката на външния ключ в MySQL и опитаме да вмъкнем реда отново.

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

Сега активираме външна проверка в MySQL

mysql> SET foreign_key_checks = 1;

Бонус четене:Как да получите данни за последния месец в MySQL

Накрая вмъкваме съответен ред в държави таблица.

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

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

Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да възстановя дъмп файл от mysqldump?

  2. Възстановете базата данни на mysql от .frm файлове

  3. Amazon EC2, mysql прекратява стартирането, защото InnoDB:mmap (x байта) не успя; грешка 12

  4. Решението на подзаявката връща повече от 1 ред грешка

  5. Как мога да потисна изхода на заглавката на колона за един SQL израз?