在MySql中禁用外键检查插入操作

时间:2014-12-01 10:33:04

标签: mysql foreign-keys foreign-key-relationship

我有一个用于映射其他两个表的两个主键的表。我将这两个字段作为外键。映射表有没有主键当我试图插入已经存在于那两个表中的2个值时,我得到无法添加或更新子行:外键约束失败错误。 我该如何解决这个问题?

我的表是这样的:

CREATE TABLE IF NOT EXISTS fuse_package_component_members    
( component_id int(11) NOT NULL, 
     member_type int(11) NOT NULL, 
     member_id int(11) NOT NULL, 
     active_date date NOT NULL, 
     inactive_date date NOT NULL, 
     KEY component_id (component_id), 
     KEY member_id (member_id) ) 
   ENGINE=InnoDB DEFAULT CHARSET=latin1

ALTER TABLE fuse_package_component_members 
ADD CONSTRAINT comp_id_fk 
FOREIGN KEY (component_id) REFERENCES fuse_component_definition (component_id) ON UPDATE NO ACTION, 
ADD CONSTRAINT ele_id_fk 
FOREIGN KEY (member_id) REFERENCES fuse_product_element (element_id)
ON DELETE NO ACTION ON UPDATE NO ACTION;

2 个答案:

答案 0 :(得分:1)

SET foreign_key_checks = 0;
UPDATE ...
SET foreign_key_checks = 1;

https://dev.mysql.com/doc/refman/5.5/en/create-table-foreign-keys.html

答案 1 :(得分:0)

从表中删除外键约束,插入数据并重新强制执行约束。

ALTER TABLE table_name
DROP FOREIGN KEY constraint_name

如果要检查约束名称,只需运行查询

show create table table_name

它将向您显示整个架构以及所有强加的约束......

再次添加约束

要关注的良好链接 - > http://www.w3schools.com/sql/sql_foreignkey.asp