Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

L'exécution de la procédure stockée T-SQL est-elle "atomique" ?

C'est pour SQL Server.

Chaque instruction est atomique, mais si vous voulez que la procédure stockée soit atomique (ou toute séquence d'instructions en général), vous devez entourer explicitement les instructions avec

COMMIT TRANSACTION
Déclaration ...
Déclaration ...
COMMIT TRANSACTION

(Il est courant d'utiliser BEGIN TRAN et END TRAN pour faire court.)

Bien sûr, il existe de nombreuses façons d'avoir des problèmes de verrouillage en fonction de ce qui se passe en même temps, vous aurez donc peut-être besoin d'une stratégie pour gérer les transactions échouées. (Une discussion complète de toutes les circonstances qui pourraient entraîner des verrous, quelle que soit la manière dont vous concevez ce SP particulier, dépasse le cadre de la question.) Mais ils pourront toujours être resoumis en raison de l'atomicité. Et d'après mon expérience, tout ira probablement bien, sans connaître vos volumes de transactions et les autres activités sur la base de données. Excusez-moi d'énoncer une évidence.

Contrairement à une idée fausse répandue, cela fonctionnera dans votre cas avec les paramètres de niveau de transaction par défaut.