【发布时间】:2015-03-06 03:54:07
【问题描述】:
假设我有一个名为 box 的表,其中 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)
【问题讨论】:
-
约束名称是标识约束的ID,它就像约束的PK(仅作为示例)。因此,您不能有两个具有相同名称的约束。一个好的做法是用它所属的表的一部分来命名约束,例如
fk_boxid#redbox和fk_boxid#bluebox(# 只是我使用的一个约定)小心不要在 oracle 中推断名称限制,如果我召回是 30 个字符
标签: sql oracle database-administration