【问题标题】:SQL Server Flexible Foreign Keys [duplicate]SQL Server灵活外键[重复]
【发布时间】:2017-12-15 19:12:35
【问题描述】:

如果有可能有灵活的外键,其中父表由表中的字段定义,我很感兴趣 - 我已经对此进行了广泛搜索,但不确定我是否找到了正确的术语来找到答案,请帮忙!希望下面的例子能很好地解释这个问题。我在 SQL Server 2016 中工作以供参考。

谢谢!

示例: 我在同一层次结构中有 3 个表(我们称它们为 A、B 和 C)。然后我有第四个表 (D),其中包含可能与前 3 个表中的任何一个相关的数据。不是有 3 个版本的表 D,每个版本都与 A、B 或 C 中的任何一个都有外键关系,是否可以在 D 中有一个外键,其中一个字段定义目标表(A、B 或 C),然后第二个字段,包含相关表中的 id 值。

所以表 D 看起来像这样:

id    ForeignTableName ForeignTableID DataPoint1
1     A                3              xxx
2     C                6              xxx
3     B                2              xxx
4     B                5              xxx
5     A                10             xxx

【问题讨论】:

  • SQL Server 不支持创建这样的约束。
  • 我很好奇您计划编写的 SQL。 FROM a inner join d on a.id = d.ForeignTableID and d.ForeignTableName = 'A' 真的比 FROM a inner join a.id = d.aid 好得多,然后确保只填充一个字段吗?

标签: sql sql-server foreign-keys


【解决方案1】:

使用外键约束无法做到这一点。这种 RI 可以通过调用函数的 CHECK CONSTRAINT 或触发器来强制执行。

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2016-02-01
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    相关资源
    最近更新 更多