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 :

mauvaise syntaxe de mon déclencheur (trigger)


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut mauvaise syntaxe de mon déclencheur (trigger)
    Bonjour,

    Après plusieurs recherches instructives (mais laborieuses, le sujet étant flou), j'ai pu créer des déclencheurs avec MySQL 5. Cependant, jusqu'ici ma programmation en sql se résumait aux appels classiques fait par PHP. Donc je ne maîtrise pas la syntaxe.
    Voici mon code, et je ne trouve pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TRIGGER verif_existence BEFORE INSERT ON administrateur FOR EACH ROW
    BEGIN
    IF EXISTS(SELECT nom_admin FROM administrateur WHERE nom_admin=new.nom_admin)
        THEN UPDATE administrateur SET old.nom_admin=new.nom_admin WHERE old.nom_admin=new.nom_admin
        ELSE nom_admin = new.nom_admin
    END IF
    END;
    L'idée est de créer un déclencheur qui vérifie qu'une entrée n'existe pas déjà dans une table, si elle existe elle update, sinon elle insert...

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut problème résolu !
    Bon en testant et re-testant différentes possibilités il s'est avéré qu'il y avait plusieurs erreurs. L'une de requête et l'autre de délimiteur...
    Je vous livre le code exact :
    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
     
    delimiter //
        CREATE TRIGGER verif_existence BEFORE INSERT  ON administrateur
    FOR EACH
    ROW 
    BEGIN 
    IF  EXISTS (
    SELECT nom_admin
    FROM administrateur
    WHERE nom_admin = new.nom_admin
    )
    THEN  UPDATE administrateur SET nom_admin = new.nom_admin WHERE nom_admin = new.nom_admin;
     
     ELSE  INSERT  INTO administrateur( nom_admin ) 
    VALUES (new.nom_admin
    );
     
     END  IF ;
     
     END//
    delimiter;
    A une prochaine...

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

Discussions similaires

  1. la syntaxe de mon trigger est fausse !
    Par mennou dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/06/2008, 18h40
  2. Création de mon premier trigger : Argh !
    Par zevince dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/04/2006, 12h03
  3. [Mail] *PHP* |Variables| Mauvaise syntaxe
    Par jilibi dans le forum Langage
    Réponses: 18
    Dernier message: 15/11/2005, 18h16
  4. Pblme simple de requete ! (mauvaise syntaxe)
    Par ju360modena dans le forum ASP
    Réponses: 12
    Dernier message: 10/06/2005, 10h22
  5. déclencheur/trigger
    Par seb92 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/07/2004, 17h12

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