Vous n'utilisez pas de temp table, vous utilisez une variable table. Il y a une différence.
Les tables temporaires fonctionnent avec les transactions, pas les tables de variables. Voir https://blog.sqlauthority.com/2009/12/28/sql-server-difference-temp-table-and-table-variable-effect-of-transaction/
Si vous deviez changer votre table de variables @tab à une table temporaire de #tab , vous obtiendrez le comportement souhaité.
Différences entre les tables temporaires et variables :https://dba.stackexchange.com/questions/16385/whats-the-difference-between-a-temp-table-and-table-variable-in- sql-server/16386#16386
Les liens que j'ai publiés ci-dessus passent en revue cela avec plus de détails que je ne le pourrais.