158 votes

Comment vérifier si une table existe et si elle n'existe pas, créer une table dans sql server 2008 ?

Je suis en train d'écrire un Stored procedure dans sql server 2008 Je dois vérifier si un table existe dans la base de données, si ce n'est pas le cas, je dois le créer.

Comment dois-je m'y prendre ?

Merci Prady

174voto

SQLMenace Points 68670

Quelque chose comme ça

IF  NOT EXISTS (SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[dbo].[YourTable]') AND type in (N'U'))

BEGIN
CREATE TABLE [dbo].[YourTable](
    ....
    ....
    ....
) 

END

169voto

Philip Kelley Points 19032

Par contraste, j'aime utiliser la fonction object_id comme indiqué ci-dessous. C'est un peu plus facile à lire, et vous n'avez pas à vous soucier de sys.objects vs. sysobjects vs. sys.all_objects vs. sys.tables. Forme de base :

IF object_id('MyTable') is not null
    PRINT 'Present!'
ELSE
    PRINT 'Not accounted for'

Bien sûr, cela apparaîtra comme "Présent" s'il y a tout présent avec ce nom. Si vous voulez vérifier seulement les tables, vous aurez besoin de :

IF object_id('MyTable', 'U') is not null
    PRINT 'Present!'
ELSE
    PRINT 'Not accounted for'

Cela fonctionne également pour les tables temporaires :

IF object_id('tempdb.dbo.#MyTable') is not null
    PRINT 'Present!'
ELSE
    PRINT 'Not accounted for'

12voto

veljasije Points 1778

EDITED

Vous pouvez vous pencher sur sys.tables pour vérifier l'existence de la table souhaitée :

IF  NOT EXISTS (SELECT * FROM sys.tables
WHERE name = N'YourTable' AND type = 'U')

BEGIN
CREATE TABLE [SchemaName].[YourTable](
    ....
    ....
    ....
) 

END

0voto

AllenG Points 6242

Premier lien dans Google pour "ms sql check if table exists" (vérifier si une table existe) http://social.msdn.microsoft.com/Forums/en-US/sqlgetstarted/thread/dc579d3c-9212-4d40-b85f-c52a22c30bd6/

C'est pour Sql 2005, mais cela fonctionnerait aussi dans 2k8.

0voto

Only You Points 1070

Essayez l'instruction suivante pour vérifier l'existence d'une table dans la base de données :

If not exists (select name from sysobjects where name = 'tablename')

Vous pouvez créer le tableau à l'intérieur du bloc if.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X