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

MySQL Discussion :

Problème avec trigger MySQL


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Problème avec trigger MySQL
    Bonjour à tous,
    voilà je suis débutant en SQL et surtout sur toute la partie trigger, procédures stockées...

    Voila le code du trigger qui cause problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    DELIMITER !!
    CREATE TRIGGER insert_product BEFORE INSERT ON PRODUCT FOR EACH ROW
      BEGIN
        DECLARE row_count INTEGER;
     
        SELECT count(*) FROM PRODUCT INTO row_count;
     
        IF row_count = 0
        THEN SET NEW.id_product = 1;
        ELSE SELECT count(table_name)
         FROM FREE_KEYS
         WHERE table_name = 'PRODUCT' INTO row_count;
     
        DECLARE key_ INTEGER;
     
        SELECT min(free_key)
        FROM FREE_KEYS 
        WHERE table_name = 'PRODUCT' INTO key_;
     
        SET NEW.id_product = key_;
     
        DELETE FROM FREE_KEYS
        WHERE table_name = 'PRODUCT' AND free_key = key_;
     
        IF row_count = 0 
        THEN DECLARE max_id INTEGER;
            SELECT max(id_product) FROM PRODUCT INTO max_id;
            SET NEW.id_product = max_id + 1;
     
        ELSE DECLARE key_ INTEGER;
           SELECT min(free_key) FROM FREE_KEYS WHERE table_name =  
                                                                           'PRODUCT' INTO key_;
           SET NEW.id_product = key_;
           DELETE FROM FREE_KEYS WHERE table_name = 'PRODUCT' AND 
                                                            free_key = key_;
         END IF;
        END IF;
      END !!
    Voilà les erreurs que me renvoi MySQL:

    ERROR 1064 (42000): 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 'DECLARE key_ INTEGER;
    SELECT min(free_key) FROM FREE_KEYS WHERE table_name = 'PR' at line 13

    Voilà je capte rien j'ai l'impression que la syntaxe est bonne

    Merci de me filer un coup de pouce svp, je viens de commencer un projet et je bloque là dessus...

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    ça y est j'ai résolu le problème, au fait il faut déclarer toute les variables a partir du BEGIN et pas les déclarer dans les IF, et là ça marche nikél.

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

Discussions similaires

  1. [WPF] Problème avec Trigger
    Par Heroes dans le forum C#
    Réponses: 7
    Dernier message: 16/07/2007, 16h58
  2. Problème avec odbc MySQL
    Par xave dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 02/08/2006, 10h11
  3. Problème avec classe MySQL
    Par shadeoner dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/07/2006, 11h25
  4. Problème avec Ado, MySQL
    Par sylvain.g dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/06/2005, 10h45
  5. [9i] problème avec trigger after logon
    Par Michael# dans le forum Oracle
    Réponses: 2
    Dernier message: 17/03/2005, 12h14

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