SQL选择仅允许唯一值的列

时间:2014-11-13 13:49:28

标签: sql-server

在查询SQL Server数据库以获取数据库结构信息时,如何确定列是否必须是唯一的?

在你回答之前,请注意这个问题不是关于DISTINCT的,它会返回数据行,而是关于表结构本身。

我也知道INFORMATION_SCHEMA.TABLE_CONSTRAINTS给出了明确应用于列的唯一约束列表。但是,我注意到它不包括主键。我可以使用获得主键信息的子查询创建连接,但这是否全面?

那么你怎么知道肯定列必须是唯一的?

1 个答案:

答案 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)