MySQLの外部キーチェックにより、外部キーの制約があるテーブルに対してデータベースを更新できない場合があります。このような場合、MySQLで外部キーチェックを一時的に無効にし、更新を行い、後でMySQLで外部キーチェックを有効にすることができます。 MySQLで外部キー制約を無効にする方法は次のとおりです。
MySQLで外部キーチェックを無効にする方法
MySQLで外部キーチェックを無効にする手順は次のとおりです。
システム変数foreign_key_checksを設定することにより、MySQLで外部キーチェックを無効にできます。 0に。
SET foreign_key_checks = 0
同様に、システム変数 forum_key_check を設定することにより、MySQLで外部キーチェックを有効にできます。 〜1
SET foreign_key_checks = 1
ただし、外部キーチェックを有効にした後、MySQLは外部キーチェックを無効にした後に追加した既存のデータを再検証しないことに注意してください。データベースへの新しい追加/更新のみをチェックします。
ボーナスリード:MySQLでシーケンスを作成する方法
例を見てみましょう。次の2つのテーブルがあるとします国 および都市 都市 外部キー列があります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で2つのテーブルを比較する方法
それでは、都市に行を挿入してみましょう。 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で過去1か月のデータを取得する方法
最後に、対応する行を国に挿入します テーブル。
mysql> INSERT INTO countries(country_id, country_name) VALUES(1,'USA'); mysql> select * from countries; +------------+--------------+ | country_id | country_name | +------------+--------------+ | 1 | USA | +------------+--------------+
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。