Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 13h26   #1
Invité de passage
 
Inscription : février 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 7
Points : 0
Points : 0
Par défaut Trigger sur un update

Bonjour,

Je vous explique mon problème.
J'ai une table "OER_REPONSE" où sont insérer des réponses provenant de formulaires (application métier), soit une ligne égale une réponse.

Voici la structure de ma table :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `OER_REPONSE` (
  `REP_NUIDENQUETE` int(11) NOT NULL DEFAULT '0',
  `REP_NUENQTYPE` int(1) NOT NULL DEFAULT '0',
  `REP_NUORDRE` int(3) NOT NULL AUTO_INCREMENT,
  `REP_NUQUESTION` int(4) NOT NULL DEFAULT '0',
  `REP_LLREPONSE` varchar(250) DEFAULT NULL,
  `REP_LLREPONSE_MOD` varchar(250) DEFAULT NULL,
  `REP_LLCOMMENTAIRE` varchar(100) DEFAULT NULL,
  `REP_DTCREAT` date DEFAULT NULL,
  `REP_DTMAJ` date DEFAULT NULL,
  `REP_COOP` varchar(12) DEFAULT NULL,
  PRIMARY KEY  (`REP_NUIDENQUETE`,`REP_NUENQTYPE`,`REP_NUORDRE`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Les réponses saisies se trouvent dans REP_LLREPONSE.

A l'aide d'un trigger je duplique ce qui est entrée dans REP_LLREPONSE vers REP_LLREPONSE_MOD. Jusque la tout va bien, sur l'INSERT c'est assez facile.

Code :
1
2
CREATE TRIGGER `BD_OER`.`TGR_REPONSE` BEFORE INSERT ON `BD_OER`.`OER_REPONSE`
 FOR EACH ROW SET new.REP_LLREPONSE_MOD = new.REP_LLREPONSE
Maintenant ce que je voudrais c'est que sur un UPDATE de REP_LLREPONSE les données soient dupliquées dans REP_LLREPONSE_MOD. En revanche, si je modifie REP_LLREPONSE_MOD, REP_LLREPONSE ne doit pas bouger ... et c'est la toute la difficulté pour moi.

J'ai essayé tout un tas de chose sans jamais réussir, un coup de main serait plus qu'apprécié.
Merci.
smux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 23h23   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Code :
1
2
3
4
5
6
7
8
9
CREATE TRIGGER Machin AFTER UPDATE ON REP_LLREPONSE
FOR EACH ROW
UPDATE REP_LLREPONSE_MOD M
WHERE M.REP_NUIDENQUETE = new.REP_NUIDENQUETE 
      AND M.REP_NUENQTYPE = new.REP_NUENQTYPE
      AND M.REP_NUORDRE = new.REP_NUORDRE
SET M.REP_NUQUESTION = new.REP_NUQUESTION,
  M.REP_LLREPONSE = new.REP_LLREPONSE,
 etc.
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h35.


 
 
 
 
Partenaires

Hébergement Web