避免在2列SQL下的行上重复

时间:2015-02-14 00:44:54

标签: sql database oracle

如何创建约束以避免同一行中2列之间出现重复:

+----+-------+-------+
| Id | Code1 | Code2 |
+----+-------+-------+
|  1 | x     | x     |
+----+-------+-------+

其中每一行,Code1都不能等于Code2。

2 个答案:

答案 0 :(得分:1)

在比较列的表中添加检查约束:

ALTER TABLE MyTable
ADD CONSTRAINT CHK_UniqueCodeOnRow 
CHECK( Code1 <> Code2 )

<强> SQL Fiddle


<强>更新

上面的Per @ collapsar评论,如果列可以为空,您可能也想要满足这一要求(即如果您不希望Code1和Code2包含空值,尽管您可以为一方或另一方感到高兴。)

ALTER TABLE MyTable
ADD CONSTRAINT CHK_UniqueCodeOnRow 
CHECK( Code1 <> Code2 AND NOT ( Code1 IS NULL AND Code2 IS NULL) )

<强> SQL Fiddle

答案 1 :(得分:-1)

您是否为其他列定义了唯一键?

如果您不希望插入完成i-e,如果不应执行CODE1 = CODE2,请为相关列定义唯一键。

但是,您可能会发现其他线程运行相同的查询。

希望这有帮助。