SQL Server 2005如何创建唯一约束?

时间:2008-09-15 17:35:18

标签: sql sql-server constraints

如何在SQL Server 2005中的现有表上创建唯一约束?

我正在寻找TSQL以及如何在数据库图表中完成它。

10 个答案:

答案 0 :(得分:272)

SQL命令是:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

请参阅完整语法here

如果您想从数据库图表中执行此操作:

  • 右键单击表格并选择“索引/键”
  • 点击“添加”按钮添加新索引
  • 在右侧的属性中输入必要的信息:
    • 您想要的列(单击省略号按钮进行选择)
    • 设置是唯一的是
    • 给它一个合适的名字

答案 1 :(得分:84)

在SQL Server Management Studio Express中:

  • 右键单击表格,选择修改设计(适用于更高版本)
  • 右键单击字段,选择索引/键...
  • 点击添加
  • 对于,请选择您想要唯一的字段名称
  • 对于类型,请选择唯一键
  • 点击关闭保存表格。

答案 2 :(得分:28)

ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

答案 3 :(得分:15)

警告:您设置为唯一的列中只能有一个空行。

您可以使用SQL 2008中的筛选索引执行此操作:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

有关一系列答案,请参阅Field value must be unique unless it is NULL

答案 4 :(得分:13)

ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

答案 5 :(得分:10)

我还发现你可以通过数据库图表来做到这一点。

右键单击表并选择Indexes / Keys ...

单击“添加”按钮,然后将列更改为您希望使其唯一的列。

更改是唯一的。

单击关闭并保存图表,它会将其添加到表格中。

答案 6 :(得分:8)

您正在寻找以下内容

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Docs

答案 7 :(得分:6)

要在创建表时在一列或多列上创建UNIQUE约束,请使用以下SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

允许为上述查询命名UNIQUE约束

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

MySQL / SQL Server / Oracle / MS Access支持的查询。

答案 8 :(得分:5)

在管理工作室图表中选择表格,如果需要,右键单击以添加新列,右键单击该列并选择“检查约束”,您可以在其中添加一个。

答案 9 :(得分:0)

在某些情况下,可能需要确保在创建Unique键之前不存在。在这种情况下,下面的脚本可能有所帮助:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO