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を使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。