Проверката на външния ключ в 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!