IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

[T-SQL] Creation de table sous condition


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Points : 54
    Points
    54
    Par défaut [T-SQL] Creation de table sous condition
    Bonjour,

    Je souhaiterais créer une table (CREATE TABLE Basetest) seulement si elle n'existe pas déjà dans la base et la conserver intact (donc ne rien faire) si elle existe déjà.

    Louis-Guillaume Morand m'a dit de faire plutôt une requête qui interroge le schéma de ma table pour savoir si ça existe, au lieu de faire (IF TABLE EXIST), c'est tout sauf une bonne utilisation de TSQL (SQL en general d'ailleurs).

    Comment interroger le schéma de ma table ?

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Je ne saisis pas bien votre question, car vous ne pouvez modifier la structure d'une table qu'en la comparant à une de même nom qui existerait déjà ...

    dans

    pour savoir si ça existe
    "ça" désigne-t-il une colonne ou une table ?

    c'est tout sauf une bonne utilisation de TSQL (SQL en general d'ailleurs).
    Dans les deux cas je ne vois pas pourquoi ...

    Comment interroger le schéma de ma table ?
    Un schéma au sens bases de données correspond à un regroupement logique de structures de données et éventuellement de modules SQL.
    En supposant que vous parliez de structure de table, et que vous travaillez sous SQL Server 2005 ou ultérieur, vous devez interroger les tables systèmes sys.columns et sys.tables en les joignant suivant la colonne object_id

    @++

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Points : 54
    Points
    54
    Par défaut
    Le but de ma demande est de créer une table dans une base par une commande SQL seulement si cette table n'existe pas déjà.

    En cherchant sur le net, cela devrait être possible avec un :
    Avec Basetest le nom de la table a créer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF NOT EXISTS Basetest CREATE TABLE Basetest (BasetestId COUNTER PRIMARY KEY, BasetestNom TEXT(30), BasetestPrenom TEXT(30))
    mais cette commande ne fonctionne pas. Comment doit s'écrire cette commande, quelle est la bonne syntaxe ?

  4. #4
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Vous mélangez un peu tout là

    NOT EXISTS cherche dans une table, dans ce cas il faut chercher dans le catalogue système comme elsuket vous l'a indiqué.

    "IF NOT EXISTS toto" ne marche pas. La syntaxe est IF NOT EXISTS (SELECT ... FROM ...)

    BaseTest est une table et pas une base de données.

    Ceci devrait vous être utile.

    @+

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Points : 54
    Points
    54
    Par défaut
    J'ai essayé avec cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF NOT EXISTS (SELECT NomTable FROM sys.tables) CREATE TABLE NomTable (NomTable_Id COUNTER PRIMARY KEY, NomTable_Nom TEXT(30), NomTable_Prenom TEXT(30));
    Et cela ne fonctionne pas. (en plus je n'arrive pas à récupérer le code erreur).

  6. #6
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MaTable]') AND type in (N'U'))
    BEGIN
    CREATE TABLE [dbo].[MaTable](...)
    END
    Vous pouvez utiliser sys.tables aussi (la colonne name ou bien object_id).

    A titre d'info, management studio produit ce genre de script: click droit sur la base, tâches, générer des scripts, et ne pas oublier de cocher "tester la présence des objets (de mémoire).

    @+

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/10/2008, 00h20
  2. [ASE 12.5.4]Creation d'une table sous condition
    Par kalder dans le forum Adaptive Server Enterprise
    Réponses: 4
    Dernier message: 30/05/2008, 15h45
  3. contenu d'une table sous condition
    Par PAUL87 dans le forum WinDev
    Réponses: 4
    Dernier message: 17/03/2008, 13h04
  4. Mise à jour d'une table sous conditions
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/11/2007, 10h56
  5. Requête SQL avec création de table sous condition
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/11/2007, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo