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

我正在寻找 TSQL 以及如何在数据库图中执行它。

有帮助吗?

解决方案

SQL命令是:

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

查看完整语法 这里.

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

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

其他提示

在 SQL Server Management Studio Express 中:

  • 右键单击表格,选择 调整 或者 设计(后续版本)
  • 右键单击字段,选择 索引/键...
  • 点击 添加
  • 为了 , ,选择 字段名称 你想要独一无二。
  • 为了 类型, , 选择 独特的钥匙.
  • 点击 关闭, 节省 桌子。
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

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

您可以使用 SQL 2008 中的过滤索引来执行此操作:

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

字段值必须唯一,除非为 NULL 以获得一系列答案。

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

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

右键单击表并选择索引/键...

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

改变是唯一的。

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

您正在寻找类似以下内容的内容

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN 文档

要在表已创建时对一列或多列创建 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 支持的查询。

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

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

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top