2011-08-01 38 views
-1

我可以使用主键/唯一键引用的列数更少的外键吗? (ORA-02270错误说不)Oracle参照约束

+1

外键需要引用单个外键行。这意味着*所有*的唯一键(并且主键也是唯一键)。 – MatBailie

回答

2

FK不一定是另一个表的PK。它可以,但它不一定。

所以,你可以根据需要为FK使用尽可能多列...

oracle

在子表的外键将一般参考父主键表。

编辑:原来的问题是关于列的数量,而不是关于使用不完整的PK的FK。

FK必须引用另一个表中唯一的东西。因此,您必须使用任何具有UNIQUE约束的列或另一个表的PK(因为PK必须是唯一的)。例如,您从表中选择多个列,因为每个列都不是唯一的,但多列的连接将是唯一的)。

+0

ORA-02270另有说明 – Rnet

+0

考虑到您的原始问题,ORA-02270未说明否则。它只是说列必须是唯一的,并且不涉及列数。你的FK可以有任意数量的列(但限于oracle中的32),但是它们都必须具有唯一的约束。 – woliveirajr

4

您可以使用较少的列,但使用的列必须对它们具有UNIQUE约束。

,当然,如果你可以把唯一约束仅仅是主键的一部分,那么你要问自己一个问题:“为什么我的主键有更多的列比第一需要地点?”