use*_*941 6 foreign-key sql-server-2008-r2 unique-constraint
从外键表中引用唯一索引有什么问题吗?
使用 SQL Server 2008 R2
不,FOREIGN KEY
约束可以引用PRIMARY KEY
或具有UNIQUE
约束或具有 的列组合UNIQUE INDEX
。
从 MSDN 页面复制,CREATE TABLE
:
FOREIGN KEY REFERENCES
是为一列或多列中的数据提供参照完整性的约束。FOREIGN KEY
约束要求列中的每个值都存在于相应的被引用列或被引用表中的列中。FOREIGN KEY
约束只能引用被引用表中的列PRIMARY KEY
或UNIQUE
约束,或者被引用表的 aUNIQUE INDEX
中引用的列。还必须标记计算列上的外键PERSISTED
。
第一个(主键)选项和其他两个选项之间的唯一区别是可以在可为空的列上定义唯一的*约束和索引。主键列必须是NOT NULL
.
* 请注意,这些在 SQL-Server 中存在一些细微差别(唯一索引提供了一些唯一约束不可用的选项):我什么时候应该使用唯一约束而不是唯一索引?
例如,(作为@gbn 点),唯一索引可以是部分的。但是,它不能被 FK 引用。