小编典典

使用'IF EXISTS'UPDATE .. ELSE .. INSERT'的危险是什么?

sql

此问题与偶尔获取SqlException:超时expired有关。实际上,我IF EXISTS... UPDATE .. ELSE .. INSERT在我的应用程序中使用率很高。但是用户Remus
Rusanu说您不应该使用此功能。为什么我不应该使用它以及它包括什么危险。所以,如果我有

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
    INSERT INTO Table1 VALUES (...)

如何重写此语句以使其起作用?


阅读 149

收藏
2021-04-07

共1个答案

小编典典

使用合并

您的SQL失败,因为2个并发的重叠调用和非常接近的调用都将在INSERT发生之前从EXISTS中获得“ false”。因此他们都尝试插入,但是当然失败了。

2021-04-07