好的,所以我从其他帖子/网站了解到,以下查询样式将自动执行:
INSERT INTO Foo(field1, field2)
SELECT @field1, @field2
WHERE NOT EXISTS (SELECT * FROM Foo
WHERE Field1 = @field1
OR Field2 = @field2)
这将用于满足 field1 和 field2 都是唯一的设计要求。到目前为止,一切都很好,花花公子。
但是,在这样的记录已经存在的情况下(查询插入 0 行),如果我想知道 WHICH 字段已经有一条具有相同值的记录该怎么办。(即,以下哪些陈述是正确的?
- 已有一条记录,其中 Field1 = @field1
- 已有一条记录,其中 Field2 = @field2
- 以上两者
您需要知道哪个字段有问题,以便显示一条错误消息,告诉用户他们需要将哪个字段更改为唯一值。我总是可以检查第二个查询,但这不是原子的。尝试插入和第二次查询之间的数据可能已更改,以确定哪个字段有问题,并且错误消息可能无法反映数据库的实际状态。
关于如何处理这种情况的任何想法?