我有一个包含4列的表
每列将为A,B,C,D
A列是主键。 B列具有唯一的名称约束。
现在我想删除B列的唯一约束,并通过组合B,C和D列来提供唯一约束。因此,该表将只允许在B,C和D列中具有特定值的一行。 / p>
我如何提供这种类型的约束?
我尝试给出复合唯一键,如:
ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)
但它正在检查是否存在任何一个约束而不是检查唯一键约束的组合。
答案 0 :(得分:47)
在这些列上创建唯一键
ALTER TABLE YourTable
add CONSTRAINT YourTable_unique UNIQUE (B, C, D);
答案 1 :(得分:6)
首先,您应该使用ALTER Query下面的一个现有约束。
ALTER TABLE table_name
DROP CONSTRAINT myUniqueConstraint;
现在,您可以使用关键字UNIQUE和所需列的组合来创建UNIQUE约束。
例如:
ALTER TABLE table_name
ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);
答案 2 :(得分:0)
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
在table_name上创建UNIQUE INDEX constraint_name (B,C,d)