在SQL Server中检查唯一键是否为复合键

时间:2017-09-15 13:15:21

标签: sql-server sql-server-2012

使用SQL Server:

Alter Table <table_name> Add Constraint <Constraint_Name> Unique (<Column1,Column2>)

我在桌面上设置了一个唯一的键约束,这个唯一键由2列组成,即column1column2

如果我有Constraint_Name,那么有没有办法找到这个约束是否是复合的,如果是复合的,那么它是从哪个列开始的?

2 个答案:

答案 0 :(得分:0)

SELECT * 
FROM  <table_name>
WHERE <column1> = <something> AND <column2> = <something_else>

是的,这将是一个复合键,因为它的组成超过1列。 MSDN Primer on Keys

答案 1 :(得分:0)

您可以根据object_idindex_id加入sys.indexessys.index_columns。您使用约束名称来匹配sys.indexes中的名称。返回的结果行数将告诉您索引中有多少列,因此单行结果位于一列上,多行结果是多列索引。

sys.index_columns页面上的示例显示了如何使用COL_NAME函数转换回列名称,或者您可以加入sys.columns以获取该数据。< / p>

(唯一键约束实现为具有相同名称的唯一索引)