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 20/05/2011, 11h01   #1
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Par défaut MYSQL - test modification colonne dans trigger

Bonjour,

Je bute encore sur un trigger.
J'ai un trigger qui met à jour la date de modification du profil utilisateur lorsque celui ci met à jour son profil. Jusque là tout va bien. sauf que j'ai un champ nbcnx qui est incrémenté à chaque fois que celui-ci se connecte.
Du coup, à chaque fois qu'il se connecte la date de mise à jour du profil change aussi: pas top donc.

Etant donné que la gestion de la date de modification du profil par un trigger est une contrainte qui m'a été imposée je dois faire évoluer mon trigger initial pour en gros 'lui dire':

Citation:
SI la colonne NBCNX est modifiée ne pas faire l'update de la date de modification profil
SINON
Update de la date de modif.
J'ai donc essayé ce trigger ainsi que plusieurs variantes:

Code :
1
2
3
4
5
6
7
8
9
10
DELIMITER ;;
CREATE TRIGGER updateprof BEFORE UPDATE ON users
 FOR EACH ROW
 BEGIN
	IF UPDATE (nbcnx) THEN
		RETURN 'dateactu pas maj';
	ELSE
		SET NEW.date_update = now();
		 END IF;
 END;;
Mais MYSQL m'affiche une erreur de syntaxe que je peine à comprendre et donc à corriger:
Citation:
#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 'UPDATE (nbcnx) THEN RETURN 'dateactu pas maj'; ELSE SET NEW.date_update ' at line 4
J'aimerais donc savoir ce qui ne va pas et si le traitement que je souhaite réaliser via ce trigger reste possible.

Par avance, merci.

Cordialement.
gouzou38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 16h45   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Cette syntaxe existe ?

Pourquoi de pas coder avec OLD et NEW ?
Code :
IF OLD.nbcnx = NEW.nbcnx THEN
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2011, 06h39   #3
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Merci pour votre aide. Après avoir revu les conditions de mon trigger ci-dessus et en suivant votre piste ça marche beaucoup mieux.

Merci beaucoup.

Pour répondre à votre question, je suis plus habitué à travaillerr avec des triggers sous SQL SERVER que sous MYSQL. D'où la confusion syntaxique.

Cordialement.
gouzou38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h14.


 
 
 
 
Partenaires

Hébergement Web