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 avec un trigger insert (colonne non reconnue )


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut Problème avec un trigger insert (colonne non reconnue )
    Bonjour,
    Donc je souhaite insérer un article dans une table article, si l'auteur a oublier de remplir le résumé, je dois rajouter un résumer à partir du contenu de l'article (150 premier caractères).

    Voici la table article:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE Article (
    	id INT UNSIGNED AUTO_INCREMENT,
    	titre VARCHAR(200) NOT NULL,
    	resume TEXT,
    	contenu TEXT NOT NULL,
    	auteur_id INT UNSIGNED NOT NULL,
    	date_publication DATETIME NOT NULL,
    	PRIMARY KEY(id)
    );
    le trigger qui permet de faire l'ajout automatique du résumer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    DELIMITER |
     
    create trigger after_insert_article after insert on article for each row 
    begin
    declare _extrait varchar(160) ;
    if  (resume is null) then 
    set _extrait=(select COALESCE(resume,substring(contenu, 1,150)) from article where id= new.id);
    end if;
    update article 
    set resume =_extrait
     where id=new.id;
     
    end |
    un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO article (titre,resume, contenu, auteur_id, date_publication,nombre_commentaires) VALUES
    ('confession',null, 'Une fois, une seule, aimable et douce femme,\r\nA mon bras votre bras poli\r\nS''appuya (sur le fond ténébreux de mon âme\r\nCe souvenir n''est point pâli) ;\r\n\r\nIl était tard ; ainsi qu''une médaille neuve\r\nLa pleine lune s''étalait,\r\nEt la solennité de la nuit, comme un fleuve,\r\nSur Paris dormant ruisselait.\r\n\r\nEt le long des maisons, sous les portes cochères,\r\nDes chats passaient furtivement,\r\nL''oreille au guet, ou bien, comme des ombres chères,\r\nNous accompagnaient lentement.\r\n\r\nTout à coup, au milieu de l''intimité libre\r\nÉclose à la pâle clarté,\r\nDe vous, riche et sonore instrument où ne vibre\r\nQue la radieuse gaieté,\r\n\r\nDe vous, claire et joyeuse ainsi qu''une fanfare\r\nDans le matin étincelant,\r\nUne note plaintive, une note bizarre\r\nS''échappa, tout en chancelant\r\n\r\nComme une enfant chétive, horrible, sombre, immonde,\r\nDont sa famille rougirait,\r\nEt qu''elle aurait longtemps, pour la cacher au monde,\r\nDans un caveau mise au secret.\r\n\r\nPauvre ange, elle chantait, votre note criarde :\r\n" Que rien ici-bas n''est certain,\r\nEt que toujours, avec quelque soin qu''il se farde,\r\nSe trahit l''égoïsme humain ;\r\n\r\nQue c''est un dur métier que d''être belle femme,\r\nEt que c''est le travail banal\r\nDe la danseuse folle et froide qui se pâme\r\nDans un sourire machinal ;\r\n\r\nQue bâtir sur les coeurs est une chose sotte ;\r\nQue tout craque, amour et beauté,\r\nJusqu''à ce que l''Oubli les jette dans sa hotte\r\nPour les rendre à l''Éternité ! "\r\n\r\nJ''ai souvent évoqué cette lune enchantée,\r\nCe silence et cette langueur,\r\nEt cette confidence horrible chuchotée\r\nAu confessionnal du coeur.',1,'2014-10-20 14:43:07',null);
    mais j'ai le message d'erreur suivant :
    Error Code: 1054. Unknown column 'resume' in 'field list'


    Merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Points : 80
    Points
    80
    Par défaut
    J'ai résolu moi meme le problème après plusieurs heure lol.Je laisse la solution au cas ou quelqu'un on a besoin après

    la première des choses le nom de la colonne resume est un nom réservé sur mysql j'ai du le changè par extrait.
    deuxièmement je me trompé sur la définition du trigger je devais utiliser un trigger avant l'insertion pour modifier la case avant voila la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER |
    create trigger before_insert_article before insert on article for each row 
    begin
     
    if  (new.extrait is null) then 
    set new.extrait =(COALESCE(new.extrait,substring(new.contenu, 1,150)));
     
    end if;
    end |

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/12/2014, 17h48
  2. Problème avec un trigger d'insertion
    Par adrian07 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 07/02/2012, 01h33
  3. Problème de base de données ACCESS non reconnue avec ASP
    Par Therambok dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/01/2009, 18h38
  4. Réponses: 4
    Dernier message: 27/11/2007, 16h32
  5. [T-SQL] problème avec un trigger
    Par karine77 dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 26/09/2005, 11h45

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