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

SQL Procédural MySQL Discussion :

[mySQL] Newbie : Utilisation de CASE


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut [mySQL] Newbie : Utilisation de CASE
    Bonjour,
    habitué au language transacSQL de MS, je me trouve un peu depourvu devant la 'faiblesse' (???) de mySQL sur ce point.
    J'aimerais faire ceci :

    Dans une table IDS contenant 2 champs : 'Nom' et 'DernierIdUtilise', utilisée pour conserver les derniers IDS utilisés (genre compteur auto), je voudrais que la procedure gère le fait que le record n'existe pas (dans ce cas je le crèe) et aussi si le champ 'DernierIdUtilise' est null (dans ce cas je l'initialise à 1.

    Voila le code que j'ai pondu, mais j'obtiens des erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    START TRANSACTION;
     
    SET @A := -1;
    SELECT @A := IF(DernierIdUtilise IS NULL ,0 ,DernierIdUtilise) FROM Ids WHERE Nom = 'Managers';
     
    CASE @A
     WHEN -1 THEN
      INSERT INTO `ids` ( `Nom` , `DernierIdUtilise` ) VALUES ('Managers', '1');
     ELSE
      UPDATE `ids` SET DernierIdUtilise = @A+1 WHERE Nom = 'Managers';
    END CASE
     
    COMMIT;
    Si qqun peux me dire où j'ai tout faux.

    Merci encore.

  2. #2
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut après recherche ...
    Après recherche un peu partout, il semble que je n'utilise pas le CASE à bon escient....

    En fait, il semble qu'il n'existe pas de vrai langage de script sous mySQL ???

    suis je dans le vrai ?

    ..........

    après infos, il semble que cela soit confirmé.... dommaaaage !

  3. #3
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Bonjour,

    Il me paraît utopique de vouloir transposer du code T-SQL tel quel dans un autre SGBD.

    A la rigueur en écrivant une procédure stockée ça pourrait fonctionner mais le code serait beaucoup plus lourd et les SP ne sont disponibles qu'avec MySQL 5.

    Sinon MySQL 4.1 fournit une option ON DUPLICATE KEY UPDATE qui pourrait convenir dans ton cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO table (nom, DernierIdUtilise) VALUES ('Managers', 1)
        ON DUPLICATE KEY UPDATE DernierIdUtilise=DernierIdUtilise+1

  4. #4
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    Merci,

    c'est effectivement une solution.

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

Discussions similaires

  1. [MYSQL] [débutant] utiliser replace avec mysql.pas
    Par alex01pernot dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/08/2006, 21h23
  2. Réponses: 21
    Dernier message: 21/07/2006, 16h55
  3. [Swing] Utilisation de cases à cocher
    Par gids01 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 25/04/2006, 15h21
  4. Réponses: 24
    Dernier message: 24/11/2005, 10h28
  5. Réponses: 1
    Dernier message: 07/07/2005, 14h02

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