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: Problème de trigger


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 15
    Par défaut Mysql: Problème de trigger
    Bonjour,

    J'ai créé deux tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE instance (
    id_instance int(11) NOT NULL AUTO_INCREMENT,
    nom varchar(30),
    PRIMARY KEY (`id_instance`)
    );
     
    CREATE TABLE aud (
    id_aud int(11) NOT NULL AUTO_INCREMENT,
    etat varchar(30),
    PRIMARY KEY (`id_aud`)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER$
    CREATE TRIGGER trig_instance_orcale AFTER INSERT ON instance
    FOR EACH ROW
    BEGIN
    	IF (NEW.id_instance='oracle') THEN
    	INSERT INTO aud(id_instance) VALUES (NEW.id_instance);
    	END IF;
    END$


    et je veux créer un trigger qui insère dans aud les instances insérées qui ont comme nom oracle. Malheureusement ça ne marche pas et je ne vois pas l'erreur.
    Je vous remercie d'avance.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Qu'est-ce qui ne marche pas ?

    MySQL ne veut pas créer le trigger ?
    Le trigger est crée mais ne fonctionne pas ?

    Déjà, comparer un INT(11) avec une chaine ('oracle')

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 15
    Par défaut
    Excuse moi je me suis trompé voila le nouveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE instance (
    id_instance int(11) NOT NULL AUTO_INCREMENT,
    nom varchar(30),
    PRIMARY KEY (`id_instance`)
    );
     
    CREATE TABLE aud (
    id_aud int(11) NOT NULL AUTO_INCREMENT,
    id_instance int(11),
    etat varchar(30),
    PRIMARY KEY (`id_aud`)
    );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DELIMITER$
    CREATE TRIGGER trig_instance_orcale AFTER INSERT ON instance
    FOR EACH ROW
    BEGIN
    	IF (NEW.nom='oracle') THEN
    	INSERT INTO aud(id_instance) VALUES (NEW.id_instance);
    	END IF;
    END;$
    Alors le soucis c'est que les tables se créent sans problème. Par contre au niveau du trigger voila l'erreur que phpmyadmin m'affiche:

    Erreur

    requête SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER trig_instance_orcale AFTER INSERT ON instance
    FOR EACH
    ROW
    BEGIN IF( NEW.nom = 'oracle' )
    THEN
    INSERT INTO aud( id_instance )
    VALUES (
    NEW.id_instance
    );
    MySQL a répondu : Documentation
    #1064 - Erreur de syntaxe près de '' à la ligne 5
    Donc je n'arrive pas à créer mon trigger.

  4. #4
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Yo!

    Try this :

    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
     
    CREATE TABLE instance (
    id_instance int(11) NOT NULL AUTO_INCREMENT,
    nom varchar(30),
    PRIMARY KEY (`id_instance`)
    );
     
    CREATE TABLE aud (
    id_aud int(11) NOT NULL AUTO_INCREMENT,
    id_instance int(11),
    etat varchar(30),
    PRIMARY KEY (`id_aud`)
    );
     
    DELIMITER |
    CREATE TRIGGER trig_instance_orcale 
    AFTER INSERT ON instance
    FOR EACH ROW
    BEGIN
    IF (NEW.nom='oracle') THEN
    INSERT INTO aud(id_instance) VALUES (NEW.id_instance);
    END IF;
    END; |

  5. #5
    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
    Billets dans le blog
    1
    Par défaut
    oui tu as un problème de délimiteur de fin d'instruction

  6. #6
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 15
    Par défaut
    Non cela ne marche pas. Il me dit:
    Erreur

    requête SQL:

    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 trig_instance_orcale AFTER INSERT ON instance
    FOR EACH
    ROW
    BEGIN IF( NEW.nom = 'oracle' )
    THEN<div class="bbcode_container">
    	<div class="bbcode_quote">
    		<div class="quote_container">
    			<div class="bbcode_quote_container"></div>
     
    				INSERT INTO aud( id_instance )
    VALUES (
    (ici l'erreur) NEW.id_instance
    );
     
    END IF ;
     
    END ;
     
    		</div>
    	</div>
    </div>

    |

    MySQL a répondu: Documentation
    #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 8

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

Discussions similaires

  1. Problème avec trigger MySQL
    Par el_kiko dans le forum MySQL
    Réponses: 1
    Dernier message: 28/02/2010, 14h23
  2. Trigger sous Mysql : Problème
    Par Aymeeeric dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 25/05/2009, 16h57
  3. [MySQL] Problème de fonctions et de triggers
    Par Shadow aok dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 13/01/2009, 09h27
  4. Problème de Triggers sous Mysql 5
    Par petozak dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 14/08/2006, 10h18
  5. [EJB2.1 Entity] [CMP] [MySQL] Problème avec clé primaire en auto increment
    Par tery dans le forum Java EE
    Réponses: 6
    Dernier message: 16/07/2004, 11h28

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