此问题与偶尔获取SqlException:超时expired有关。实际上,我IF EXISTS... UPDATE .. ELSE .. INSERT在我的应用程序中使用率很高。但是用户Remus Rusanu说您不应该使用此功能。为什么我不应该使用它以及它包括什么危险。所以,如果我有
IF EXISTS... UPDATE .. ELSE .. INSERT
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue') UPDATE Table1 SET (...) WHERE Column1='SomeValue' ELSE INSERT INTO Table1 VALUES (...)
如何重写此语句以使其起作用?
使用合并
您的SQL失败,因为2个并发的重叠调用和非常接近的调用都将在INSERT发生之前从EXISTS中获得“ false”。因此他们都尝试插入,但是当然失败了。