我有这个“类型”表
+-----------+--------+
| RefTypeID | TypeID |
+-----------+--------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 2 |
| 2 | 4 |
| 3 | 5 |
+-----------+--------+
由于不会重复每行中的两个值,因此我创建了一个包含两个列的唯一约束。
我还有另一个看起来像这样的表(Prymes)
+---------+-----------+--------------------+
| PrymeID | RefTypeID | ***More Columns*** |
+---------+-----------+--------------------+
| 1 | 2 | *** |
| 2 | 2 | *** |
| 3 | 3 | *** |
| 4 | 1 | *** |
| 5 | 1 | *** |
| 6 | 3 | *** |
+---------+-----------+--------------------+
我想在Prymes中创建一个仅引用Types中的RefTypeID列的外键,但是由于约束,该关系必须在Prymes中包括两列,在Keys中包括两列。
有什么方法可以仅使用两个表中的RefTypeID列来创建关系吗?
答案 0 :(得分:1)
你不能。
您只能在主键或唯一键的所有列中创建外键。您不能使用局部的,因为不能保证多列唯一键的单列唯一地标识一行(并且它不会像示例数据中所示)。
换句话说,您将需要一个具有唯一RefTypeId
的表,并将RefTypeId
用作该表的主键,并同时引用Types
和{{1} }和外键。