外键引用2个单独的表

时间:2013-11-12 05:44:00

标签: sql oracle foreign-keys

我有两个主要ID表:

CREATE TABLE Table1
(   Id  INT NOT NULL AUTO_INCREMENT,
CONSTRAINT t1_pkey PRIMARY KEY (Id));

CREATE TABLE Table2
(   Id  INT NOT NULL AUTO_INCREMENT,
CONSTRAINT t2_pkey PRIMARY KEY (Id));

我有第三个表,我正在尝试设置外键

CREATE TABLE Action
(   TableId INT NOT NULL AUTO_INCREMENT,
CONSTRAINT ac_pkey PRIMARY KEY (Id));

我需要添加一个可以引用table1或table2的外键,具体取决于哪个具有值。这是可能的还是我将不得不为表1和2设置父表?

1 个答案:

答案 0 :(得分:1)

外键无法引用一个表或另一个表。

  • 您可以将table1table2type列合并,然后将id, type的组合作为组合表的主键和Action中的外键{1}}。
  • 您可以创建一个新表格,该表格既是table1table2的父级,也是Action
  • 您可以在Action中创建两个单独的列,引用table1,另一个引用table2,然后创建一个检查约束,确保只填充其中一个。

您更喜欢哪种方法将归结为您正在尝试建模的方式。