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 24/02/2011, 11h17   #1
Membre habitué
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 130
Points : 130
Par défaut Trigger Mise a jour de colonne.

Bonjour,

Une petite explication sur mon projet.
J'ai une application cliente (avec une db Mysql) et une sur téléphone portable (avec la même base de données).
Afin de synchroniser les données entre mes 2 bases, j'ai créé une colonne date "date_sync". Pour m'eviter d'oublier dans le code de mes applications de mettre a jour cette date. J'aurai souhaité créer des triggers en ajout et modification.
En ajout puisque (si j'ai bien compris), on ne peut pas créer de valeur par défaut cur_date() sur une colonne date.
Donc j'ai essayé ceci :
Code :
1
2
3
4
5
CREATE TRIGGER trg_companies_date_sync AFTER INSERT ON companies
FOR each row
begin
SET NEW.date_sync = curdate() WHERE NEW.id = NEW.id;
end
Et j'ai l'erreur suivante :
Code :
1
2
 
Updating od NEW row IS NOT allowed IN after TRIGGER
J'ai une erreur similaire pour le trigger sur un after update.
Qu'est ce que je fais de pas bien ?
Qu'elle(s) solution(s) existe(nt) ?
en vous remerciant.
Bonne journée.
__________________
"La Bretagne, ça vous gagne !!!"
dudule est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 11h37   #2
Membre habitué
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 130
Points : 130
J'ai trouvé mon erreur.
voici ce qu'il faut faire :
créer une colonne date avec la valeur null autorisé.
et créer ses 2 triggers :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
delimiter //
CREATE TRIGGER trg_companies_insert_date_sync before INSERT ON companies FOR each row
begin
SET new.date_sync = now();
end //
 
delimiter //
CREATE TRIGGER trg_companies_update_date_sync before UPDATE ON companies FOR each row
begin
SET new.date_sync = now();
end //
Et le tour est joué.
Merci de votre attention.
Bonne journée.
__________________
"La Bretagne, ça vous gagne !!!"
dudule 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 16h30.


 
 
 
 
Partenaires

Hébergement Web