【发布时间】: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