复合主键,其中1个键来自不同的表,具有不同的数据库

时间:2017-04-03 13:20:17

标签: sql database oracle

我在两个不同的数据库中有两个不同的表。 比方说, 在DB1中,我有表" A"列为" C1"作为主键," C2"," C3"。 在DB2中,我有表" B"列为" X1"," X2"," X3"。

现在,我想在表B中创建一个复合主键,使得字段为(" C1"," X1")为Composite_PK1," X2&#34 ;," X3"。

有人可以解释如何使用其他表的主键作为另一个表中复合主键的元素之一吗?

1 个答案:

答案 0 :(得分:1)

表格的主键必须由表格中的一列或多列组成,因此您的问题确实没有意义。

如果您在数据库中有此表名为DB_ONE

A
   C1      PK
   C2
   C3

此数据库中的表名为DB_TWO

B
   C1    FK to column C1 in Table DB_ONE.A
   X1
   X2

如果您愿意,可以将表B的主键定义为(C1, X1)。但是列C1必须位于表B中。任何表中的特定列都可以充当外键(FK)以及主键(PK)的全部或部分。

如果您的表位于同一Oracle实例上的不同数据库模式 ,则可以在创建外键时尝试使用模式限定的表名(DB_ONE.A)。像这样的DDL可能会帮到你。

      ALTER TABLE DB_TWO.B
                  ADD CONSTRAINT fk_my_favorite_name
                     FOREIGN KEY (C1)
                      REFERENCES DB_ONE.A (C1);

如果它们位于不同的Oracle实例上,那么您尝试设置外键是不合时宜的。