PHPスクリプトでmysqlの外部キー制約を無効にする方法はありますか?PHPでMySQLの外部キーの制約を無視する
私はphpからmysqlに渡されたクエリを持っていますが、外部キー制約に失敗します.dbスキーマを変更せずにこれを回避する方法はありますか?
私はちょうどいくつかのテストをしているので、完了したら行を削除します。
PHPスクリプトでmysqlの外部キー制約を無効にする方法はありますか?PHPでMySQLの外部キーの制約を無視する
私はphpからmysqlに渡されたクエリを持っていますが、外部キー制約に失敗します.dbスキーマを変更せずにこれを回避する方法はありますか?
私はちょうどいくつかのテストをしているので、完了したら行を削除します。
mysql_query('SET foreign_key_checks = 0');
//do some stuff here
mysql_query('SET foreign_key_checks = 1');
あなたは外部キーを無効にするには、MySQLのクエリを確認することを実行することができます。
SET FOREIGN_KEY_CHECKS=0;
が完了したら、それを有効にすることを忘れないでください:
SET FOREIGN_KEY_CHECKS=1;
は、クエリを実行します。 set FOREIGN_KEY_CHECKS=0;
mysql> insert into bar values(1);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`bar`, CONSTRAINT `bar_ibfk_1` FOREIGN KEY (`foo_id`) REFERENCES `foo` (`foo_id`) ON UPDATE CASCADE)
mysql> set FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into bar values(1);
Query OK, 1 row affected (0.00 sec)
私のスニペットコレクションには次のようなものがあります。
SET @[email protected]@FOREIGN_KEY_CHECKS;
SET @@FOREIGN_KEY_CHECKS=0;
-- Do stuff here
SET @@[email protected]_FOREIGN_KEY_CHECKS;
SET @BACKUP_FOREIGN_KEY_CHECKS=NULL;
これは正解です。私は二重の "@@"が必要であることを覚えていません。 – Xeoncross
これは、セッション変数の構文の1つです。「SET SESSION FOO = 1」、「SET @ SESSION.FOO = 1」または「SET @@ FOO = 1」です。 –