2008-08-05 8 views
17

Lors de l'écriture d'un script T-SQL que je prévois de réexécuter, j'utilise souvent des tables temporaires pour stocker des données temporaires. Puisque la table temporaire est créée à la volée, j'aimerais pouvoir la supprimer seulement si elle existe (avant de la créer).Quelle est la meilleure façon de déterminer si une table temporaire existe dans SQL Server?

Je posterai la méthode que j'utilise, mais j'aimerais voir s'il y a une meilleure méthode.

Répondre

25
IF Object_Id('TempDB..#TempTable') IS NOT NULL 
BEGIN 
    DROP TABLE #TempTable 
END 
14

La fonction OBJECT_ID renvoie l'ID d'objet interne pour le nom et le type d'objet donné. 'tempdb .. # t1' fait référence à la table # t1 dans la base de données tempdb. 'U' est pour la table définie par l'utilisateur.

IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL 
    DROP TABLE #t1 

CREATE TABLE #t1 
(
    id INT IDENTITY(1,1), 
    msg VARCHAR(255) 
) 
0
SELECT name 
FROM sysobjects 
WHERE type = 'U' AND name = 'TempTable' 
+1

Keith, il semble que cette requête trouvera les tables utilisateur normales, mais pas les tables temporaires. –

Questions connexes