组合键或不使用SQL server:检查唯一密钥在SQL Server
Alter Table <table_name> Add Constraint <Constraint_Name> Unique (<Column1,Column2>)
我做一个独特的键约束在我的桌子,这唯一的密钥是由2列,即column1
和column2
。
如果我有Constraint_Name
,那么有没有什么办法可以找到这个约束是否合成,如果合成,那么它是从哪个列创建的?
组合键或不使用SQL server:检查唯一密钥在SQL Server
Alter Table <table_name> Add Constraint <Constraint_Name> Unique (<Column1,Column2>)
我做一个独特的键约束在我的桌子,这唯一的密钥是由2列,即column1
和column2
。
如果我有Constraint_Name
,那么有没有什么办法可以找到这个约束是否合成,如果合成,那么它是从哪个列创建的?
SELECT *
FROM <table_name>
WHERE <column1> = <something> AND <column2> = <something_else>
是这将是一个复合键,因为它是超过1列组成。 MSDN Primer on Keys
你可以加入sys.indexes
和sys.index_columns
一起基于object_id
和index_id
。您可以使用约束名称来匹配sys.indexes
中的名称。返回的结果行数将告诉您索引中有多少列,因此单行结果在一列上,多行结果是多列索引。
sys.index_columns
页面上的示例显示如何使用COL_NAME
函数转换回列名称,或者您也可以加入sys.columns
以获取该数据。
(唯一键约束实现为具有相同名称的唯一索引)