我有一个用于映射其他两个表的两个主键的表。我将这两个字段作为外键。映射表有没有主键当我试图插入已经存在于那两个表中的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;
答案 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