2017-12-15 17 views
1

親テーブルがテーブル内のフィールドによって定義されているフレキシブルな外部キーを使用することが可能な場合、私は興味があります - これは広範な検索がありますが、答えを見つけるために、助けてください!うまくいけば、以下の例では問題を十分に説明してくれるはずです。私はSQL Server 2016で参考にしています。SQL Serverフレキシブル外部キー

ありがとうございます!

例: 私は3つのテーブル(A、B、Cと呼ぶ)を同じ階層で使用しています。私は最初の3つのテーブルのいずれかに関連する可能性のあるデータを含む4番目のテーブル(D)を持っています。表Dの3つのバージョンを持つのではなく、それぞれがA、BまたはCのいずれかとの外部キー関係を持つことは、1つのフィールドがターゲット表(A、BまたはCのいずれか)を定義し、関連するテーブルのid値を含む2番目のフィールド。

だから、テーブル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 
+0

SQL Serverは、このような制約の作成をサポートしていません。 – Sami

+0

私はあなたが書くことを計画しているSQLについて興味があると思います。 'FROM a inner join a.id = d.ForeignTableIDとd.ForeignTableName = 'A''は本当に' FROM a inner join a.id = d.aid'よりもずっと優れていて、フィールドに値が設定されていますか? –

答えて

1

外部キー制約でこれを行うことはできません。この種類のRIは、関数を呼び出すCHECK CONSTRAINT、またはトリガーで強制的に実行できます。

関連する問題