Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'esecuzione della stored procedure T-SQL è "atomica"?

Questo è per SQL Server.

Ogni istruzione è atomica, ma se vuoi che la procedura memorizzata sia atomica (o qualsiasi sequenza di istruzioni in generale), devi racchiudere esplicitamente le istruzioni con

INIZIA LA TRANSAZIONE
Dichiarazione ...
Dichiarazione ...
COMMIT TRANSAZIONE

(È comune usare BEGIN TRAN e END TRAN in breve.)

Ovviamente ci sono molti modi per entrare nei problemi di blocco a seconda di cos'altro sta succedendo allo stesso tempo, quindi potresti aver bisogno di una strategia per gestire le transazioni non riuscite. (Una discussione completa di tutte le circostanze che potrebbero causare blocchi, indipendentemente da come si escogita questo particolare SP, va oltre lo scopo della domanda.) Ma saranno comunque ripresentabili a causa dell'atomicità. E secondo la mia esperienza probabilmente starai bene, senza conoscere i tuoi volumi di transazione e le altre attività sul database. Mi scusi per aver affermato l'ovvio.

Contrariamente a un malinteso popolare, nel tuo caso funzionerà con le impostazioni predefinite del livello di transazione.