Je crée une table temporaire (#myTable
) et à l'aide d'un curseur. Cela crée-t-il un problème lorsque des utilisateurs simultanés accèdent au curseur via mon application? Est-ce que cela me permet de créer des tables temporaires distinctes avec le même nom?
Voici l'exemple de code:
Open cursor;
Fetch Next from cursor into @Variable_Temp_Table_Name;
Create table #myTable(pk int)
While @@Fetch_Status = 0
Begin
Fetch Next from cursor into @Variable_Temp_Table_Name;
End
Le serveur SQL ajoute toujours un nombre aléatoire à la fin d'un nom de table temporaire (en arrière-plan), lorsque les utilisateurs simultanés créent des tables temporaires dans leurs sessions avec le même nom, SQL Server créera plusieurs tables temporaires dans la tempdb.
J'ai créé 3 tables temporaires appelées #TempTable
dans trois sessions différentes dans mon SSMS, maintenant si je vais dans tempdb, je peux voir les tables temporaires qui y sont créées avec une chaîne aléatoire (unique) ajoutée au nom de chaque table temporaire.
Oui, plusieurs applications obtiendront leurs propres copies de la table #temp. C'est le point d'utiliser une table #temp, car chaque session simultanée a son propre objet isolé. Cela n'a rien à voir avec si vous utilisez un curseur en combinaison avec votre table #temp (bien que je soupçonne que le curseur n'est pas nécessaire de toute façon - vous n'avez pas inclus suffisamment de code pour commenter spécifiquement).
Modifier pour inclure un commentaire:
Une autre chose à propos de l'utilisation des tables #temp est que si vous avez besoin d'y ajouter des contraintes, laissez SQL Server générer le nom sinon, même si la table sera unique à la session, la contrainte ne le sera pas et la seconde instance générera une erreur lors de la création de la table.