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

Requêtes MySQL Discussion :

Souci avec un if


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut Souci avec un if
    Bonjour,

    Je me mets un peu a mysql et je n'arrive pas a tester l'existence du foreign key.
    Le code me semble bon mais j'ai un message d'erreur (MySQL Database Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS (select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constrai' at line 1 12 0
    ):
    )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELIMITER $$
    IF NOT EXISTS (select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_name = 'FK_NEWS_USER') THEN
    	ALTER TABLE NEWS 
    	ADD CONSTRAINT `FK_NEWS_USER` FOREIGN KEY (`iduser`) REFERENCES `USER` (`iduser`);
    END IF;
    $$
    DELIMITER ;
    Voilà je ne suis pas contre un petit coup de pouce...
    Merci
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Ton IF doit obligatoirement être dans un bloc BEGIN... END, qui lui-même doit être dans une proc stock, une fonction ou un trigger.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Ah ... merci de ces précisions, donc grosso modo, je peux pas faire un script .SQL de création de table qui teste si mes contraintes sont créées ou pas ... je suis terriblement deçu

    Merci pour ton aide
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  4. #4
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Ça devrait pouvoir se faire, avec de la volonté. Il n'y a "qu'à" :
    • définir une procédure qui fait tout ça
    • l'appeler
    • la supprimer

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par Sivrît Voir le message
    Ça devrait pouvoir se faire, avec de la volonté. Il n'y a "qu'à" :
    • définir une procédure qui fait tout ça
    • l'appeler
    • la supprimer
    Je comprends bien, néanmoins, ça m'oblige a splitter tous mes scripts ou créer une sp par table ... ce qui alourdit fortement la charge de travail ...
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Je ne vois pas trop à quoi tout ça servirait de toute façon... La clé étrangère doit soit exister, soit ne pas exister, mais pas être détruite et re-créée tous les quatre matins !

    De manière générale, on ne met normalement pas de DDL dans des objets procéduraux.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par Antoun Voir le message
    Je ne vois pas trop à quoi tout ça servirait de toute façon... La clé étrangère doit soit exister, soit ne pas exister, mais pas être détruite et re-créée tous les quatre matins !

    De manière générale, on ne met normalement pas de DDL dans des objets procéduraux.
    Le schema de la base est amené a évoluer, alors l'idée c'est de tester l'existence d'une contrainte qu'on aurait pu ajouter entre plusieurs version de la base. Si c'est pas le cas on la rajoute (loin de moi l'idée de la supprimer).
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Citation Envoyé par Tankian Voir le message
    Le schema de la base est amené a évoluer, alors l'idée c'est de tester l'existence d'une contrainte qu'on aurait pu ajouter entre plusieurs version de la base. Si c'est pas le cas on la rajoute (loin de moi l'idée de la supprimer).
    Donc ça n'a pas vraiment besoin d'être automatisé ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 182
    Points : 110
    Points
    110
    Par défaut
    oui oui ... j'essaye juste d'être le plus propre possible ...

    Merci à vous.
    Ce n'est pas parce qu'ils sont beaucoup a avoir tort qu'ils ont raison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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