如何在SQL Server 2005中的现有表上创建唯一约束?
我正在寻找TSQL以及如何在数据库图表中完成它。
答案 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)
答案 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