我必须创建两个具有双向关系的表,如下图所示。 但它总是会出错。我使用以下查询来创建表。
CREATE TABLE IF NOT EXISTS `rpt_operation` (
`op_id` int(45) NOT NULL,
`component` int(45) NOT NULL,
`ideal_time` time NOT NULL,
`handling_time` time NOT NULL,
PRIMARY KEY (`op_id`),
INDEX (component),
FOREIGN KEY (component)
REFERENCES rpt_component(comp_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `rpt_component` (
`comp_id` int(45) NOT NULL,
`lot_code` int(60) NOT NULL,
`lot_color` varchar(60) NOT NULL,
`drawing_num` int(60) NOT NULL,
`revision_num` int(60) NOT NULL,
`operation` int(45) NOT NULL,
PRIMARY KEY (`comp_id`),
INDEX (operation),
FOREIGN KEY (operation)
REFERENCES rpt_operation(op_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
错误出现在rpt_operation表的行component int(45) NOT NULL
中。
任何帮助将不胜感激。
提前致谢
答案 0 :(得分:4)
你的桌子结构是不可能的。您无法将任何记录插入rpt_operation
,因为rpt_component
外键中没有component
的记录,您无法将任何记录插入rpt_component
,因为那里rpt_operation
外键中operation
没有记录。
如果您将其中一个或两个字段设为可空,则表结构仍然是递归的,因此您必须手动添加其中一个外键,例如:
ALTER TABLE rpt_operation
ADD CONSTRAINT
FOREIGN KEY (component)
REFERENCES rpt_component(comp_id);
答案 1 :(得分:0)
我建议您使用链接表来解决此问题。这不是一个可行的解决方案,需要解决方法。