Sql server SQL选择只允许唯一值的列

Sql server SQL选择只允许唯一值的列,sql-server,Sql Server,在SQL Server数据库中查询数据库结构信息时,如何确定列是否需要唯一 在回答之前,请注意,这个问题不是关于将返回数据行的DISTINCT,而是关于表结构本身 我还知道INFORMATION\u SCHEMA.TABLE\u CONSTRAINTS给出了显式应用于列的唯一约束列表。但是,我注意到它不包括主键。我可以创建一个带有子查询的连接,该子查询可以获取主键信息,但这是否全面呢 那么,您如何确定列必须是唯一的呢?您可以使用此查询 select s.name, t.name, i.name,

在SQL Server数据库中查询数据库结构信息时,如何确定列是否需要唯一

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

我还知道
INFORMATION\u SCHEMA.TABLE\u CONSTRAINTS
给出了显式应用于列的唯一约束列表。但是,我注意到它不包括主键。我可以创建一个带有子查询的连接,该子查询可以获取主键信息,但这是否全面呢

那么,您如何确定列必须是唯一的呢?

您可以使用此查询

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)

您始终可以尝试插入重复的值。这样你就很确定了。我想如果你有唯一的约束,唯一的索引和主键,这就涵盖了它。