sql - 如何强制执行两列约束?

时间:2010-05-14 16:44:19

标签: sql sql-server-2005 sql-server-2008

我在表格中有一个CustomerID列和一个EffectiveDate列。

我需要这两者的组合才是独一无二的。

但是,我已经在自动编号的整数列上有一个主键。

实现目标的好方法是什么?

由于

4 个答案:

答案 0 :(得分:7)

只需添加一个唯一约束:

Alter Table TableName
  Add Constraint UC_TableName_Col1Col2 Unique ( Col1, Col2 )

在创建唯一约束时,SQL Server会创建唯一索引。如果已存在聚簇索引,则上述内容将创建该索引为非聚簇索引。但是,您可以这样明确:

Alter Table TableName
  Add Constraint UC_TableName_Col1Col2 Unique Nonclustered ( Col1, Col2 )

答案 1 :(得分:3)

CREATE UNIQUE INDEX Some_Index_Name ON My_Table (CustomerID, EffectiveDate)

答案 2 :(得分:1)

尝试在两列上创建UNIQUE索引。

CREATE TABLE Example
(Col1 int NOT NULL,
Col2 int NOT NULL,
UNIQUE (Col1, Col2)
)

取自this thread

的示例

答案 3 :(得分:1)

CREATE TABLE MyTable
(
<columns here>
CONSTRAINT U_ConstraintName UNIQUE (CustomerID, EffectiveDate)
)