【问题标题】:Foreign Key references 2 separate tables外键引用 2 个单独的表
【发布时间】:2013-11-12 05:44:00
【问题描述】:

我有 2 个表都有主 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 设置父表?

【问题讨论】:

  • FK 不能引用 Oracle 中的两个表。您可以设置一个父表,或组合Table1Table2。哪个最好取决于您的情况。
  • 谢谢。我不认为这是可能的,但只是想我会检查一下。

标签: sql oracle foreign-keys


【解决方案1】:

外键不可能引用一个表或另一个。

  • 您可以将table1table2type 列组合,然后将id, type 的组合作为组合表的主键和Action 中的外键。
  • 您可以创建一个新表,它是table1table2 以及Action 的父表
  • 您可以在 Action 中创建两个单独的列,分别引用 table1 和引用 table2 的另一列,然后创建一个检查约束以确保仅填充其中一个。

您更喜欢哪种方法取决于您要建模的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多