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 :

[Trigger] mise a jour d'un champ lors de l'uptate d'un autre


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut [Trigger] mise a jour d'un champ lors de l'uptate d'un autre
    Bonjour,

    Je ma lance actuellement dans les "triggers" (soyez indulgent, il s'agit du premier que je crée).

    Je possède une table qui comporte trois champs.

    Table : test
    nom des champs : id / visible / date

    Mon but est de créer un trigger qui lorsque l'on place visible sur 1, il fasse une mise a jour de la date en y insérant la date actuelle.

    Voici mon code erronée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELIMITER ^
    CREATE TRIGGER update AFTER UPDATE ON test FOR EACH ROW
    begin
      if (NEW.etat=='1') then NEW.date=CURRENT_TIMESTAMP;
      end if;
    end^
    DELIMITER ;
    Pourriez vous m'aider ?
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    J'ai un peu avancé en mysql c'est "=" et non "==")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DELIMITER ^
    CREATE TRIGGER test AFTER UPDATE ON films_visibles FOR EACH ROW
    begin
      if NEW.etat='1' then NEW.date=current_timestamp;
      end if;
    end^
    DELIMITER ;
    Je me confronte tout de même à une autre erreur :
    ERROR 1064 (42000): 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 '.date=CURRENT_TIMESTAMP.

    Merci

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

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 921
    Points : 6 037
    Points
    6 037
    Par défaut
    Attention, DATE est un mot réservé SQL...
    L'utilisation, bien que permise par MySQL pour nommer 1 colonne est à proscrire.
    Si tu maintiens ce nom pour la colonne, il faut la mettre en apostrophes
    `date` je crois.

    http://dev.mysql.com/doc/refman/5.0/...ved-words.html

    Enfin est la syntaxe préconisée
    CF. http://dev.mysql.com/doc/refman/5.0/...-triggers.html

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Merci pour le coup de main !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DELIMITER ^
    CREATE TRIGGER test1 BEFORE UPDATE ON test FOR EACH ROW
    begin
      DECLARE temp DATE;
      SET temp=current_timestamp;
      if NEW.etat='1' then SET NEW.date=temp;
      end if;
    end^
    DELIMITER ;

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/01/2014, 13h39
  2. Réponses: 4
    Dernier message: 25/09/2006, 14h36
  3. VB6 Access Mise a jour d'un champ
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 24/08/2006, 16h21
  4. Réponses: 10
    Dernier message: 11/07/2006, 14h50
  5. TRIGGER - mise a jour champ de la table declencheur
    Par jane_ng dans le forum Oracle
    Réponses: 1
    Dernier message: 17/06/2006, 19h12

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