忽略PHP中的MySQL外键约束

时间:2010-11-24 16:03:20

标签: php mysql testing foreign-keys

有没有办法在php脚本中覆盖mysql外键约束?

我有一个从php传递给mysql的查询,但它没有外键约束,有没有办法在不改变数据库模式的情况下解决这个问题?

我只是在进行一些测试,所以当我完成时我将删除该行。

4 个答案:

答案 0 :(得分:19)

mysql_query('SET foreign_key_checks = 0');
//do some stuff here
mysql_query('SET foreign_key_checks = 1');

答案 1 :(得分:6)

您可以执行该MySQL查询以禁用外键检查:

SET FOREIGN_KEY_CHECKS=0;

完成后别忘了启用它:

SET FOREIGN_KEY_CHECKS=1;

答案 2 :(得分:2)

运行查询: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)

答案 3 :(得分:1)

我的代码段集中有类似的内容:

SET @BACKUP_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS; 
SET @@FOREIGN_KEY_CHECKS=0;

-- Do stuff here

SET @@FOREIGN_KEY_CHECKS=@BACKUP_FOREIGN_KEY_CHECKS;
SET @BACKUP_FOREIGN_KEY_CHECKS=NULL;