0

我必须创建两个具有双向关系的表,如下图所示。 在此处输入图像描述 但它总是给出一个错误。我正在使用以下查询来创建表。

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;

错误出现在component int(45) NOT NULLrpt_operation 表的行中。任何帮助将不胜感激。提前致谢

4

2 回答 2

4

你的表结构是不可能的。您不能插入任何记录,因为外键rpt_operation没有记录,也不能插入任何记录,因为外键没有记录。rpt_componentcomponentrpt_componentrpt_operationoperation

如果您使这些字段中的一个或两个都可以为空,则表结构仍然是递归的,因此您必须手动添加其中一个外键,例如:

ALTER TABLE rpt_operation
  ADD CONSTRAINT
  FOREIGN KEY (component)
  REFERENCES rpt_component(comp_id);
于 2012-09-12T11:26:28.120 回答
0

我建议您使用链接表来解决此问题。这不是一个可行的解决方案,需要变通方法。

于 2012-09-12T11:46:44.097 回答