如何在 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]
我还发现你可以通过数据库图表来做到这一点。
通过右键单击表并选择索引/键...
单击“添加”按钮,然后将列更改为您希望唯一的列。
更改是唯一的。
单击关闭并保存图表,它会将其添加到表格中。
要在表已创建时在一个或多个列上创建 UNIQUE 约束,请使用以下 SQL:
ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
允许为上述查询命名唯一约束
ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
MySQL / SQL Server / Oracle / MS Access 支持的查询。
在管理工作室图表中选择表,如果需要,右键单击添加新列,右键单击列并选择“检查约束”,在那里你可以添加一个。
在某些情况下,可能需要在创建唯一键之前确保它不存在。在这种情况下,下面的脚本可能会有所帮助:
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