在查询SQL Server数据库以获取数据库结构信息时,如何确定列是否必须是唯一的?
在你回答之前,请注意这个问题不是关于DISTINCT
的,它会返回数据行,而是关于表结构本身。
我也知道INFORMATION_SCHEMA.TABLE_CONSTRAINTS
给出了明确应用于列的唯一约束列表。但是,我注意到它不包括主键。我可以使用获得主键信息的子查询创建连接,但这是否全面?
那么你怎么知道肯定列必须是唯一的?
答案 0 :(得分:0)
您可以使用此查询
select s.name, t.name, i.name, c.name
from sys.tables t
inner join sys.schemas s on t.schema_id = s.schema_id
inner join sys.indexes i on i.object_id = t.object_id
inner join sys.index_columns ic on ic.object_id = t.object_id
inner join sys.columns c on c.object_id = t.object_id and
ic.column_id = c.column_id
where i.index_id > 0
and (i.is_unique_constraint = 1 or i.is_unique = 1)