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 :

probleme de syntaxe avec trigger


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Points : 32
    Points
    32
    Par défaut probleme de syntaxe avec trigger
    Bonjour,

    j'ai un problème avec la syntaxe de mes trigger.

    Mon trigger est accepté comme ceci par le moteur mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
     FOR EACH ROW 
     
     UPDATE search_text SET data=CONCAT_WS(' ',NEW.Sujet,NEW.SujetNL,NEW.Contenu,NEW.ContenuNL),Actif=NEW.Actif,DateUpdated=NOW()
     
    WHERE model = 'annonce' and Ref_Model = NEW.Ref
    et quand je l'introduit comme ceci il n'en veut pas, quelqu'un peut m'aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
     FOR EACH ROW BEGIN
     IF NEW.hit = OLD.hit THEN
    	UPDATE search_text SET data=CONCAT_WS(' ',NEW.Sujet,NEW.SujetNL,NEW.Contenu,NEW.ContenuNL),Actif=NEW.Actif,DateUpdated=NOW() WHERE model = 'annonce' and Ref_Model = NEW.Ref;
     END IF;
     END;
    Et j'ai essayé pas mal de combinaison, pas moyen...

    Merci d'avance

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    sans en dire plus on peut pas t'aider...

    message erreurs?

    comportement attendu et obtenu?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    j'ai sans cesse ce genre de message :

    #1064 - 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 '' at line 1

    et pourtant je vérifie bien ma syntaxe, j'ai été voir sur plusieurs sites. Il doit y avoir autres choses...

    Ici ma requete réduite, même problème
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
    FOR EACH ROW
    BEGIN
    IF NEW.hit != OLD.hit THEN
    UPDATE search_text SET DateUpdated=NOW() WHERE Ref_Model = NEW.Ref;
    END IF;
    END;

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Est-ce mieux comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELIMITER $$
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
    FOR EACH ROW
    BEGIN
    IF NEW.hit != OLD.hit THEN 
    UPDATE search_text SET DateUpdated=NOW() WHERE Ref_Model = NEW.Ref;
    END IF;
    END$$
     
    DELIMITER ;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    parfait, mais peux-tu être plus explicite quand à l'utilisation ds DELIMITER ?

    merci bcp en tout cas

  6. #6
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    delimiter $$
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
    FOR EACH ROW
    BEGIN
    IF NEW.hit <> OLD.hit THEN
      UPDATE search_text
      SET DateUpdated=NOW()
      WHERE Ref_Model = NEW.Ref;
    END IF;
    END$$

    delimiter change le délimiteur de fin de ligne pour éviter que l'interpréteur s'arrête sur les lignes dans un bloc begin...end lors de sa création

    attention c'est pas != pour différent en sql mais <>
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par flagodzki Voir le message
    parfait, mais peux-tu être plus explicite quand à l'utilisation ds DELIMITER ?

    merci bcp en tout cas

    MyQL interprète les ; en tant que fin d'une commande SQL.

    Donc ta requète était vu comme 3 instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TRIGGER `trigger_update_searchText` AFTER UPDATE ON `annonce`
     FOR EACH ROW BEGIN
     IF NEW.hit = OLD.hit THEN
    	UPDATE search_text SET DATA=CONCAT_WS(' ',NEW.Sujet,NEW.SujetNL,NEW.Contenu,NEW.ContenuNL),Actif=NEW.Actif,DateUpdated=NOW() WHERE model = 'annonce' AND Ref_Model = NEW.Ref;
    Il faut donc changer le DELIMITER afin que le ; ne soit pas interprété. (J'ai mis $$ mais tu peux mettre //, toto, tutu... Le but est de mettre quelque chose que tu ne risques pas d'avoir dans ta fonction)
    Et n'oublie pas de le repositionner à ; à la fin !

    Edit: Pas vu la réponse d'Eric...

  8. #8
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    normal, j'avais édité la réponse, j'avais pas vu la tienne non plus

    bref par contre attention aux confusion c/c++ et sql
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/08/2009, 11h06
  2. Probleme de syntaxe avec des calculs integrant des variables
    Par trigger00 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/06/2009, 09h20
  3. Probleme de syntax avec SQL
    Par hydroxyproline dans le forum Développement
    Réponses: 4
    Dernier message: 07/04/2009, 10h23
  4. Réponses: 2
    Dernier message: 11/04/2007, 22h34
  5. probleme de syntaxe avec $_SERVER['PHPSELF']
    Par Petogaz dans le forum Langage
    Réponses: 7
    Dernier message: 21/04/2006, 11h13

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