Това е за SQL Server.
Всеки оператор е атомен, но ако искате съхранената процедура да бъде атомна (или всяка последователност от оператори като цяло), трябва изрично да оградите операторите с
НАЧАЛО НА ТРАНЗАКЦИЯ
Изявление ...
Изявление ...
ИЗВЪРШВАНЕ НА ТРАНЗАКЦИЯ
(Обичайно е да се използват съкратено BEGIN TRAN и END TRAN.)
Разбира се, има много начини да изпаднете в проблеми със заключването в зависимост от това какво друго се случва по същото време, така че може да се нуждаете от стратегия за справяне с неуспешни транзакции. (Пълното обсъждане на всички обстоятелства, които могат да доведат до заключвания, без значение как измисляте този конкретен SP, е извън обхвата на въпроса.) Но те все пак ще могат да бъдат подавани повторно поради атомарността. И според моя опит вероятно ще се оправите, без да знаете за обемите на вашите транзакции и другите дейности в базата данни. Извинете ме, че казвам очевидното.
Противно на популярното погрешно схващане, това ще работи във вашия случай с настройките на ниво транзакция по подразбиране.