我正在使用Sql Server for Visual Studio。我有两列,1是自动递增而另一列不是,但我希望使两个主键和未增加的键可以用作另一个表中的外键。感谢
答案 0 :(得分:3)
就像TomTom所说的那样,你想做什么没有任何意义。 如果第二列(您未调用的那一列)已经是唯一的,则可以删除自动增量列,因为它是冗余且无用的。
冗余是由于在一个密钥中聚合的2个唯一列不仅损害了列本身的唯一性,而且它使用2个不同的列来描述相同的值!
id | col | some_data
-------------------------------
1 | A |
2 | B |
3 | D |
正如你所看到的,如果我想指向一个特定的行,在这种情况下你正在描述,我可以只使用id或col列,它们都是有效的!
如果相反,未增加的列不是唯一的,主键应该只是自动递增的列,而这个列应该用作其他表中的外键。
如果您真的想拥有2个不同的列,那么您拥有的最后一个选项是不将第一个选项设置为自动增量列。
作为一般规则,自动增量列应始终用作单列键。