2010-04-20 55 views
25

我可以用下面的查詢很容易得到的唯一約束列表:獲取唯一約束的列清單(在TSQL)?

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='UNIQUE' 

但是我如何才能使每個唯一約束應用於列的列表?

回答

24

INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE

36

埃德是正確的,列暴露在約束列使用視圖,使您的生活更輕鬆,因爲它的krufted SQL。

select TC.Constraint_Name, CC.Column_Name from information_schema.table_constraints TC 
inner join information_schema.constraint_column_usage CC on TC.Constraint_Name = CC.Constraint_Name 
where TC.constraint_type = 'Unique' 
order by TC.Constraint_Name 
+0

我用使用過濾器'constraint_type *** ***我的檢查約束=「CHECK''如:***'其中TC.constraint_type =」檢查' AND TC.TABLE_NAME ='Roles2016.UsersCRM' AND CC.Column_Name ='State'' *** – Kiquenet 2016-07-07 07:35:37

1
SELECT * 
FROM sys.indexes i 
JOIN sys.index_columns ic ON i.index_id = ic.index_id 
         AND i.object_id = ic.object_id 
WHERE i.is_unique_constraint = 1 
+0

'index_id'列的值在對象或模式中唯一唯一嗎? – 2011-06-08 03:03:05

1

只爲MySQL用戶參考, 同樣的事情可以用下面的查詢來實現:

要查找表

select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='UNIQUE' and table_name='db_my_table' 

要找到獨特的列中的任何唯一性約束與所有列

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='cons_name' and TABLE_NAME='db_my_table' 
012列

找到唯一的列清單,所需的視圖

select CONSTRAINT_NAME,COLUMN_NAME,TABLE_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='cons_name' and TABLE_NAME='db_my_table'