SQLServer2005如何创建唯一约束?

如何在 SQLServer2005中对现有表创建唯一约束?

我正在寻找两个 TSQL 和如何在数据库图中做到这一点。

183619 次浏览
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 文档

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

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

通过右键单击表并选择 Index/Keys..。

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

改变是唯一的。

单击 close 并保存图表,它将把图表添加到表中。

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

SQL 命令是:

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

请参见完整语法 给你

如果您想从数据库关系图中进行操作:

  • 右键单击表格并选择“索引/键”
  • 单击 Add 按钮添加新索引
  • 在右边的属性中输入必要的信息:
    • 所需的列(单击要选择的省略号按钮)
    • Set Is Unique to Yes
    • 给它起个合适的名字

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

您可以使用 SQL2008中的筛选索引来实现这一点:

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

有关一系列答案,请参见 字段值必须是唯一的,除非它为 NULL

在 SQLServerManagementStudioExpress 中:

  • 右键单击表,选择 修改设计(以后版本)
  • 右击字段,选择 索引/键..。
  • 对于 柱子,选择要唯一的 字段名
  • 对于 类型,选择 唯一钥匙
  • 单击 差不多保存表。

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

在某些情况下,最好在创建 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