Utiliser des tables temporaires

Effectué

Vous pouvez utiliser Transact-SQL pour créer des tables temporaires. On distingue deux types de tables temporaires :

  • Tables temporaires locales
  • Tables temporaires globales

Créer des tables temporaires locales

Utilisez des tables temporaires locales pour créer des tables délimitées à votre session active. Cela signifie que votre table temporaire n’est visible que pour vous, et lorsque la session est terminée, la table n’existe plus. Plusieurs utilisateurs peuvent créer des tables à l’aide du même nom, et ils n’auraient aucun effet les uns sur les autres.

Pour créer une table temporaire locale, vous utilisez la même approche que vous le feriez lors de la création d’une table normale. Toutefois, vous devez ajouter # avant le nom de la table pour indiquer qu’il s’agit d’une table temporaire locale :

CREATE TABLE #Products (
    ProductID INT PRIMARY KEY,
    ProductName varchar,
    ...
);

Créer des tables temporaires globales

Vous pouvez également créer des tables temporaires globales. Une table temporaire globale est accessible dans toutes les sessions. Toutefois, cela signifie qu’une table temporaire globale doit avoir un nom unique, contrairement à une table temporaire locale. Les tables temporaires globales sont supprimées automatiquement lorsque la session qui l’a créée se termine, et toutes les tâches qui le font référence à toutes les sessions ont également pris fin. Vous créez une table temporaire globale de la même façon que vous créez une table temporaire locale, sauf que vous utiliseriez ## au lieu de la spécifier # unique comme table temporaire globale :

CREATE TABLE ##Products (
    ProductID INT PRIMARY KEY,
    ProductName varchar,
    ...
);

Insérer et lire des données à partir d’une table temporaire

Vous pouvez insérer des données dans vos tables temporaires (locales et globales) à l’aide de la même approche que les tables régulières, à l’aide d’INSERT. Il vous suffit d'ajouter le # ou le ## au nom de la table. Par exemple:

INSERT #Products (ProductID, ProductName, ProductDescription)  
    VALUES (1, 'The temporary time leap', 'A novel about temporary time leaping.');  

Vous pouvez également récupérer les résultats d’une table temporaire à l’aide de SELECT. Par exemple, pour récupérer toutes les lignes et colonnes de votre table temporaire #Products , et commander les résultats par nom de produit, vous devez exécuter :

SELECT *  
FROM #Products  
ORDER BY ProductName;