Portée des tables temporaires dans SQL Server
Lorsque vous travaillez avec SQL Server, il est crucial de comprendre la portée des tables temporaires pour éviter la corruption des données . Cet article explore les idées fausses entourant le partage de tables temporaires dans des environnements multi-utilisateurs et clarifie le rôle d'EXEC dans la création de nouvelles étendues.
Portée de table temporaire
Contrairement à l'affirmation que les tables temporaires sont partagées, SQL Server assure l'isolation des opérations d'importation simultanées. Comme indiqué dans la documentation de Microsoft :
Portée de l'EXEC
Chaque appel à EXEC crée une nouvelle portée. Cela signifie qu'une table temporaire créée dans une procédure stockée n'est pas visible par les autres procédures stockées s'exécutant simultanément.
Considérez l'exemple fourni :
CREATE PROC [dbo].[ImportCompany] ( @CompanyId AS INTEGER ) AS EXEC [dbo].[ImportAddress] @CompanyId = @CompanyId --Import other data CREATE PROC [dbo].[ImportAddress] ( @CompanyId AS INTEGER ) AS CREATE TABLE #Companies (OldAddress NVARCHAR(128), NewAddress NVARCHAR(128)) INSERT INTO #Companies(OldAddress, NewAddress) SELECT Address as OldAddress, 'Transformed ' + Address as NewAddress FROM [OldDb].[dbo].[Addresses] WHERE CompanyId = @CompanyId --Do stuff with the transformed data DROP TABLE #Companies EXEC [dbo].[ImportCompany] @CompanyId = 12345
Dans ce cas, la table #Companies est automatiquement supprimé à la fin de la procédure ImportAddress, garantissant qu'aucune opération d'importation simultanée ne peut accéder ou corrompre it.
Conclusion
Les tables temporaires dans SQL Server sont limitées à la session en cours et ne peuvent pas être partagées entre des importations simultanées. Chaque appel à EXEC crée une nouvelle portée, garantissant l’isolement et empêchant la corruption des données. Par conséquent, l'utilisation de variables de table n'est pas nécessaire pour maintenir l'intégrité des données dans ce scénario.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!