Ce petit billet démontre que les tables variables ne sont pas affectées par les transactions crées par des utilisateurs. Dans notre démonstration, nous focaliserons notre test sur l’utilisation de ROLLBACK qui permet d’annuler une transaction effectuée sur un objet.

Entrée dans le vif du sujet…

Création d’une table temporaire #Tab_temp et d’une table variable @Tab_var, puis lancement d’une transaction de manipulation de lignes des 2 tables suivi d’un ROLLBACK :

1
<br />CREATE TABLE #Tab_temp(Tab_temp_ID INT)<br />DECLARE @Tab_var TABLE(Tab_var_ID INT)<br /><br />BEGIN TRAN<br /><%%KEEPWHITESPACE%%>   INSERT #Tab_temp<br /><%%KEEPWHITESPACE%%>     OUTPUT INSERTED.Tab_temp_ID<br /><%%KEEPWHITESPACE%%>       INTO @Tab_var VALUES(1),(2),(3)<br /><br />SELECT *<br />FROM #Tab_temp<br /><br />SELECT *<br />FROM @Tab_var<br /><br />ROLLBACK<br /><br />SELECT *<br />FROM #Tab_temp<br /><br />SELECT *<br />FROM @Tab_var<br /><br />DROP TABLE #Tab_temp<br />GO<br />

 

Résultat :

  • Avant ROLLBACK :


  • Après ROLLBACK :

Comme on peut le noter, l’annulation de la transaction (via ROLLBACK) n’a affecté que la table temporaire, ce qui confirme l’indépendance d’une table variable sur les transactions utilisateurs.

Pour aller plus loin…

Pour avoir une comparaison entre les tables temporaires et les tables variables, vous pouvez aller ici.

Share This