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 :

error near TRIGGER


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2012
    Messages : 33
    Par défaut error near TRIGGER
    Bonjour, j'ai ce probleme lors de la création de n'importe quel "trigger" sur mysql !!!

    error 1064 (42000): you have an error in your SQL syntax; check the manuel that corresponds to your MySQL server version for the right syntax to use near TRIGGER .........' at line 1.
    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    C'est bien de nous donner le message d'erreur mais sans le code qui a provoqué l'erreur... c'est comme si tu nous donnais une clé sans nous dire quelle serrure elle ouvre !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2012
    Messages : 33
    Par défaut
    Bonjour, vous avez raison:

    voila mon code:

    Aprés avoir créer correctement la table tab1(id, val1).
    Je veux ajouter des contraintes d'integrités avec check pour dire que val1 doit etre toujours superieur a 10 mais comme check ne marche pas sur mysql alors j'ai fait le trigger suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mysql>delimiter $$
    >create trigger trg after insert on tab1
    >begin
    >if (val1<10) then
    >return false;
    >end if;
    >end
    >|
    l'erreur déjà montionnée, se localise toujours au mot "trigger" a la ligne 1.

    Noter que j'ai essayé meme de changer de minuscule a majuscule mais noooooooooooo thing qui change !!!!!!!

    j'ai essayé aussi de changer le delimiter de $$ à | ou ;; mais noooooooo thing qui change.

    j'ai essayé aussi de faire "create" a la ligne 1 puis à la ligne 2 j'ai mis le reste "trigger on tab1", je remarque que l'erreur sera à la ligne 2, donc la conclusion est que son probleme est au mot "trigger" !!!




    Citation Envoyé par CinePhil Voir le message
    C'est bien de nous donner le message d'erreur mais sans le code qui a provoqué l'erreur... c'est comme si tu nous donnais une clé sans nous dire quelle serrure elle ouvre !

  4. #4
    Membre émérite
    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
    Par défaut
    Il te manque FOR EACH ROW

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2012
    Messages : 33
    Par défaut
    Citation Envoyé par Fred_34 Voir le message
    Il te manque FOR EACH ROW
    Merci pour la remarque, oui je fait . Juste j'ai mal copié le code.

    Donc, le probléme est le meme !!!!!!!!!!!!!!!!!!!!!!

    c'est :
    error 1064 (42000): you have an error in your SQL syntax; check the manuel that corresponds to your MySQL server version for the right syntax to use near TRIGGER .........' at line 1.


    1)- Est ce que Mysql differencie entre minuscule et majuscule ???!!!



    2)- normalement puisque c'est indiqué à ligne 1 , donc la faute est au ligne 1, c'est ça???? mais lorsque je fais :
    [code=sql]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create
    trigger trg_name
    after insert on tab1
    ....
    L'erreur se deplace en ligne2 !!!!!!!!!!!!

  6. #6
    Membre émérite
    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
    Par défaut
    Si tu es en 5.5 tu devrais pouvoir faire comme ça ( Il te faut un trigger "BEFORE INSERT" et non "AFTER INSERT" ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER $$
    CREATE TRIGGER trg BEFORE INSERT ON tab1
    FOR EACH ROW
    BEGIN
      IF (NEW.val1<10) then
        SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = 'Val1 is too small...';
      END IF;
    END$$

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

Discussions similaires

  1. erreur : syntax error near unexpected token
    Par lapinou8430 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/04/2009, 00h30
  2. SQLite error near à la lecture d'une donnée texte
    Par ernie74 dans le forum SQLite
    Réponses: 4
    Dernier message: 04/01/2009, 06h13
  3. error near "(" :syntax error
    Par elekis dans le forum SQLite
    Réponses: 1
    Dernier message: 26/09/2008, 23h37
  4. [sh] syntax error near unexpected token `}'
    Par vercin dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/09/2007, 11h33
  5. [dump SQL] syntax error near 'ENGINE=MyISAM
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/09/2006, 12h33

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