SQL Server 2005 How Create a Unique Constraint?
如何在SQL Server 2005中的现有表上创建唯一约束?
我正在寻找TSQL以及如何在数据库图表中完成它。
SQL命令是:
1 2 3 4 5 | ALTER TABLE <tablename> ADD CONSTRAINT <constraintname> UNIQUE NONCLUSTERED ( <columnname> ) |
请参阅此处的完整语法。
如果您想从数据库图表中执行此操作:
- 右键单击表并选择"索引/键"
- 单击"添加"按钮以添加新索引
-
在右侧的属性中输入必要的信息:
- 你想要的列(点击省略号按钮选择)
- 设置是独特的是
- 给它一个合适的名字
在SQL Server Management Studio Express中:
- 右键单击表,选择"修改"或"设计"(对于以后的版本)
- 右键单击字段,选择"索引/键"...
- 单击添加
- 对于"列",请选择要唯一的字段名称。
- 对于Type,选择Unique Key。
- 单击关闭,保存表格。
1 | ALTER TABLE [TableName] ADD CONSTRAINT [constraintName] UNIQUE ([COLUMNS]) |
警告:您设置为唯一的列中只能有一个空行。
您可以使用SQL 2008中的筛选索引执行此操作:
1 2 3 | CREATE UNIQUE NONCLUSTERED INDEX idx_col1 ON dbo.MyTable(col1) WHERE col1 IS NOT NULL; |
请参阅字段值必须是唯一的,除非它对于一系列答案为NULL。
1 2 3 4 5 | ALTER TABLE dbo.<tablename> ADD CONSTRAINT <namingconventionconstraint> UNIQUE NONCLUSTERED ( <columnname> ) ON [PRIMARY] |
我还发现你可以通过数据库图表来做到这一点。
通过右键单击表并选择索引/键...
单击"添加"按钮,将列更改为您希望使其唯一的列。
变化是独一无二的。
单击关闭并保存图表,然后将其添加到表中。
您正在寻找以下内容
1 2 3 | ALTER TABLE dbo.doc_exz ADD CONSTRAINT col_b_def UNIQUE column_b |
MSDN文档
要在已创建表时在一列或多列上创建UNIQUE约束,请使用以下SQL:
1 | ALTER TABLE TableName ADD UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) |
允许为上述查询命名UNIQUE约束
1 | ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) |
MySQL / SQL Server / Oracle / MS Access支持的查询。
在管理工作室图表中选择表格,如果需要,右键单击以添加新列,右键单击该列并选择"检查约束",您可以在其中添加一个。
在某些情况下,可能需要确保在创建Unique键之前不存在该唯一键。在这种情况下,下面的脚本可能会有所帮助:
1 2 3 4 5 6 | 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 |