Je peux get une list de contraintes uniques assez facilement avec la requête suivante:
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='UNIQUE'
Mais comment get une list des colonnes auxquelles s'applique chaque contrainte unique?
Voir INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
Ed est correct, les colonnes sont exposées sur la vue d'utilisation de la colonne de contraintes, pour vous rendre la vie plus facile, le sql krufted pour cela.
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
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
Juste pour la reference des users mySQL, même chose peut être réalisé avec des requêtes ci-dessous:
Pour find une contrainte unique sur une table
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE='UNIQUE' and table_name='db_my_table'
Pour find une list de colonnes unique avec toutes les colonnes
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='cons_name' and TABLE_NAME='db_my_table'
find une list de colonnes unique avec la vue requirejse
select CONSTRAINT_NAME,COLUMN_NAME,TABLE_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_NAME='cons_name' and TABLE_NAME='db_my_table'