我有两个主要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设置父表?
答案 0 :(得分:1)
外键无法引用一个表或另一个表。
table1
和table2
与type
列合并,然后将id, type
的组合作为组合表的主键和Action
中的外键{1}}。 table1
和table2
的父级,也是Action
Action
中创建两个单独的列,引用table1
,另一个引用table2
,然后创建一个检查约束,确保只填充其中一个。 您更喜欢哪种方法将归结为您正在尝试建模的方式。