이 질문은 Occasionally Getting SqlException: Timeout expired과 관련이 있습니다. 사실, 내 애플 리케이션에 크게 IF EXISTS... UPDATE .. ELSE .. INSERT
을 사용하고 있습니다. 그러나 사용자 Remus Rusanu는 이것을 사용해서는 안된다고 말하고 있습니다. 왜 내가 이것을 사용해서는 안되며 위험을 포함시켜야한다. 그렇다면, 내가 가진 경우'존재하는 경우 ... 업데이트 ... ELSE .. INSERT'를 사용하는 위험 및 대안은 무엇입니까?
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)
이 문장을 다시 작성하여 작동되게하려면 어떻게해야합니까? 2 개 동시 중복과 매우 가까운 전화가 모두 INSERT가 발생하기 전에 존재에서 "false"를 얻을 수 있기 때문에
http://blog.sqlauthority.com/2008/08/28/sql-server-2008-introduction-to-merge-statement-one -statement-for-insert-update-delete/ –