如何创建约束以避免同一行中2列之间出现重复:
+----+-------+-------+
| Id | Code1 | Code2 |
+----+-------+-------+
| 1 | x | x |
+----+-------+-------+
其中每一行,Code1都不能等于Code2。
答案 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,请为相关列定义唯一键。
但是,您可能会发现其他线程运行相同的查询。
希望这有帮助。