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 :

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 confirmé
    Profil pro
    Lycéen
    Inscrit en
    Mai 2012
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2012
    Messages : 68
    Par défaut Problème de TRIGGER
    Bonjour,
    mon trigger est le suivant, j'aimerais pouvoir update la date de dernière modification d'un topic lorsque quelqu'un y participe (et ajoute donc une entrée dans la table Message), pour le moment mon trigger ressemble à ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TRIGGER mod_date AFTER INSERT
    ON message FOR EACH ROW
    UPDATE topic SET topic.last_update = CURRENT_TIMESTAMP where topic.idtopic = message.concern
    END;
    dans phpMyAdmin je règle le délimiteur sur ";"

    mais j'obtient l'erreur:
    #1064 - Erreur de syntaxe près de 'END' à la ligne 4

    si quelqu'un sait pourquoi j'obtient cette erreur, merci.

  2. #2
    Membre chevronné Avatar de Sebwar
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 172
    Par défaut
    il n'y a pas de END sans BEGIN et vu que vous n'avez qu'une seule instruction vous n'avez pas besoin de BEGIN.......END
    donc enlevez le END et ca devrait passer

    https://dev.mysql.com/doc/refman/5.5...er-syntax.html

  3. #3
    Membre chevronné Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Par défaut
    Bonjour JohnLocke,

    Petite(s) remarque(s) importante(s) :
    1. Cela aurait été un plus d'avoir le DDL des tables 'topic' et 'message', en leur absence, on ne peut savoir si votre code a du sens.
    2. ceci étant, dans le code suivant du trigger AFTER portant sur la table 'message'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE topic SET topic.last_update = CURRENT_TIMESTAMP where topic.idtopic = message.concern
    vous faites référence à la colonne 'concern' de la table 'message' de manière incorrecte : message.concern doit etre remplacé par new.concern !)

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    C'est peut être dommage de faire un trigger uniquement pour moucharder l'horodatage d'insertion avec la current date !
    Si les insertions sont centralisées dans un service unique, c'est même contre-productif
    Une valeur par défaut dans le DDL de création la table est une solution possible et moins couteuse si le type de colonne est compatible

  5. #5
    Membre chevronné Avatar de isabelle.letrong
    Femme Profil pro
    Conseil - Consultante en systèmes d'information
    Inscrit en
    Juillet 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultante en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2010
    Messages : 109
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    C'est peut être dommage de faire un trigger uniquement pour moucharder l'horodatage d'insertion avec la current date !
    Si les insertions sont centralisées dans un service unique, c'est même contre-productif
    La notion de service centralisé unique est une question intéressante.
    Personnellement, je milite haut et fort pour que ces services dits 'centralisés' ne soient pas des services clients développés avec un code tiers (PHP, JAVA, 'Hibernatisés') mais bels et bien intégrés aux serveurs MySQL sous la forme de routines stockées (procédures/fonctions/triggers) qui font force de lois. Les modes en matière de langage de développement évoluent mais au final les données, SQL et le modèle relationnel restent. Si on excepte les interfaces utilisateurs, on peut TOUT faire avec ces routines, et particulièrement tout ce qui concerne le développement de la gestion du cœur de business d'une entreprise.

    Laissons donc les framework gérer les interfaces utilisateurs et le moteur relationnel les données, leur pérennité et leur intégrité ...

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

Discussions similaires

  1. PL/SQL problème sur Trigger
    Par kitsune dans le forum PL/SQL
    Réponses: 4
    Dernier message: 06/12/2005, 20h35
  2. [9i] problème avec trigger after logon
    Par Michael# dans le forum Oracle
    Réponses: 2
    Dernier message: 17/03/2005, 12h14
  3. [Interbase6] Problème de triggers
    Par emeraudes dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2005, 09h52
  4. [SQLPLUS] - Problème de Triggers Java
    Par farcis dans le forum Oracle
    Réponses: 7
    Dernier message: 23/12/2004, 09h21
  5. [PL/SQL] problème de trigger
    Par Chuck67 dans le forum Oracle
    Réponses: 14
    Dernier message: 09/12/2004, 23h17

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