假设我有一个名为boxes的表,其中box_id属性为PK。
还有另外两张桌子。第一个是red_boxes,第二个是blue_boxes。
我在red_boxes表中添加了一个约束
ALTER TABLE red_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id);
现在,我想在blue_boxes表中添加一个约束。如果我没有将约束添加到red_boxes,则SQL结构将如下所示。解决这个问题的显而易见的方法是以不同方式命名新约束,例如fk_box_id2
,但这是一个好方法吗?我应该以某种方式重新使用先前的约束,或者这是不可能的,为什么?
ALTER TABLE blue_boxes
ADD CONSTRAINT fk_box_id
FOREIGN KEY (box_id)
REFERENCES boxes (box_id)
答案 0 :(得分:3)
每个约束都是独立的,需要唯一的名称。我的建议是使用源表和目标表名称,例如fk_red_boxes_boxes
和fk_blue_boxes_boxes
。通过这种方式,您可以轻松识别它们的来源和去向。
如果您的表名中有下划线,您可能想要一个修改后的约定,您可以一目了然地轻松理解。例如,双下划线:fk__blue_boxes__boxes
和fk__red_boxes__boxes
。