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 :

modification d'un champs par 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 witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut modification d'un champs par trigger
    salut
    j'ai un souci concernant les triggers, j'essaie de mettre comme un ptit test un champs en majuscule
    je mets
    CREATE TRIGGER maj_field before insert on inscrits
    for each row
    begin
    update inscrits set new.Nom=upper(new.Nom);
    end
    ça marche pas ..syntaxe fausse ou je ne sais quoi (je deteste les messages d'erreurs de phpmyadmin ça montre rien).
    bref, ce que j'essaie de faire c'est incremonter le nombre de message pour chaque inscrit à chaque insertion d'un nouveau message, j'ai deux tables en relation une table inscrits et une table messages, biensure l'Id_inscrit de la table inscrits et une clé etrangere vers la table messages.
    voilà je sais pas comment proceder déjà je me bloque dans cette syntaxe de mettre en maj un champs, alors comment je peux faire pour faire ça
    je compte beaucoup sur vous
    merci en 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
    Le déclencheur ne peut pas faire référence directe aux tables par leur nom, y copmris la table à laquelle il est associé
    http://dev.mysql.com/doc/refman/5.0/...-triggers.html


    "update inscrits" est manifestement de trop.

  3. #3
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    salut gi130
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    euh, c pour moi cette citation?
    bref,j'ai déjà corrigé, je devais ajouter une reponse ici lol
    c bien pas de update inscrits juste un set suffit, mais ça m'aide pas trop sur ce que je cherche à faire, j'ai déjà dis ça....je cherche à modifier un champs qui se trouve dans une autre table, cad quand j'ajoute un enregistrement dans la table qui contient le trigger, un champs qui se trouve dans une autre table doit etre modifié.
    j'explique plus clairement ce que j'essaie de faire,voilà, j'ai deux tables en relation..
    inscrits(Id_inscrit,nom,prenom,..,nb_message)et
    messages(Id_message,contenu,#Id_inscrit)
    l'ajout d'un nouveau enregistrement dans la table message doit incremonter le nb_message dans la table inscrits.
    je sais pas comment faire ça si je suis sensé ne pas utiliser de nom de table
    note: j'ai déjà fais ça sur sqlserver voilà le code :
    create trigger add_msg
    on messages for insert
    as
    declare @id integer,@nb integer
    set @id=(select i.id_inscrit from inserted i,inscrits ins where i.Id_inscrit=ins.Id_inscrit)
    set @nb=(select nb_message from inscrits where id_inscrit=@id)
    begin
    update inscrits set nb_message=@nb+1 where id_inscrit=@id
    end
    comment traduire ça en mysql?
    merci.

  4. #4
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    salut
    j'ai fais des recherches pour comprendre plus la syntaxe de mysql et j'ai trouvé ce lien
    http://dev.mysql.com/doc/refman/5.0/...e-trigger.html
    j'ai c/c le code du l'exemple suivant:
    CREATE TABLE test1(a1 INT);
    CREATE TABLE test2(a2 INT);
    CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
    CREATE TABLE test4(
    a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    b4 INT DEFAULT 0
    );

    CREATE TRIGGER testref BEFORE INSERT ON test1
    FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
    END;
    mais ça m'affiche une erreur sur le trigger..
    #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 'INSERT INTO test2 SET a2 = NEW.a1' at line 3
    la syntaxe parait fausse, ça met une croix rouge sur INSERT INTO test2

    pourtant c la syntaxe correcte que j'ai trouvé dans le manuel mysql 5.0, c bien la version que j'utilise

  5. #5
    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
    Quelle est le numéro de version exact et complet de MySQL ?

  6. #6
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    salut
    voilà le numero exacte de la version
    Version du client MySQL: 5.0.37
    aussi la constante php_version m'affiche :5.2.3

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

Discussions similaires

  1. Maintenir un champs par trigger
    Par Jean-Jacques Engels dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 07/12/2010, 10h40
  2. [FB 1.5]modifier 2 champs par un trigger
    Par Moine dans le forum SQL
    Réponses: 1
    Dernier message: 24/11/2007, 08h37
  3. Réponses: 2
    Dernier message: 05/02/2007, 17h09
  4. Evenement déclenché par la modif d'un champ
    Par Virgile le chat dans le forum Langage
    Réponses: 2
    Dernier message: 01/12/2006, 09h11
  5. Réponses: 7
    Dernier message: 04/10/2005, 17h34

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