Triggers

Résolu
Signaler
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
-
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
-
bonjour à tous,
Voilà j'ai 2 tables : - membre(id_membre*, .....,date_de_maj)
- formation_membre(id_membre* , ..... )
*correspond à la clef primaire, et clef primaire étrangère
date_de_maj me permet de savoir de quand les dates les infos des enregistrements, et comme formation_membre est une sous-table de membre, je voudrais créer un trigger qui dès que je fais un insert ou un update sur la sous-table formation_membre, que le champs date_de_maj prenne la date du jour.


J'espère avoir été clair.
En vous remerciant.


PS: j'utilise postgresql 8



N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!

4 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
CREATE TRIGGER trg_datetime

ON dbo.membre

FOR INSERT,UPDATE

AS

UPDATE membre SET .....,date_de_maj)=CONVERT(DATETIME,getdate())



GO



J'ai pas testé pas SQL server sur cette machine



Désolé j'avais pas vu que c'est du psotgres 8.



Mais ca dois etre un peu pres la meme chose.
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
2
Salut,

Merci pour ta réponse c'est dejà plus claire, mais entre temps j'ai trouvé la solution :



/*==========================================================================*/

/* fonction getdate_membre2





*/

/*==========================================================================*/

CREATE OR REPLACE FUNCTION getdate_membre2() RETURNS "trigger" AS

$BODY$

DECLARE

identifiant varchar(20);

BEGIN

identifiant:=new.login;

update membre set
date_maj=CURRENT_TIMESTAMP where login=identifiant;


RETURN new;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE;





/*==========================================================================*/

/* trigger
trigger_membre_infoperso



*/

/*==========================================================================*/

CREATE TRIGGER trig_membre_infoperso BEFORE INSERT ON infoperso FOR EACH ROW EXECUTE PROCEDURE getdate_membre2();


Voilà cerla me permet de mettre à jour date_maj de la table membre
quand je fais un insert ou un update sur la table infoperso, de plus
ici la clef des tables est login.

J'ai testé et cela marche.

Merci !!!

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Salut



CREATE TRIGGER trg_datetime_insert


ON dbo.stroke_data


FOR INSERT,UPDATE


AS


UPDATE stroke_data SET onset_datetime=CONVERT(DATETIME,onset_date+''+onset_time)


UPDATE stroke_data SET er_datetime=CONVERT(DATETIME,er_date+''+er_time)


UPDATE stroke_data SET exam_datetime=CONVERT(DATETIME,exam_date+''+exam_time)


UPDATE stroke_data SET first_datetime=CONVERT(DATETIME,first_date+''+first_time)


UPDATE stroke_data SET consult_called_dt=CONVERT(DATETIME,consult_called_date+''+consult_called_time)


UPDATE stroke_data SET consult_arrived_dt=CONVERT(DATETIME,consult_arrived_date+''+consult_arrived_time)


GO



VOila a toi de faire la suite
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
2
Salut,
Tout d'abord merci pour ta réponse, cependant je ne vois pas du tout ce que fais ton code, pourrais tu me donner quelques explications stp.
Sinon je sais faire un trigger pour mettre à jour moin champs quand celui ci fait parti de la table du trigger, mais je ne sais pas le faire quand le champs appartient à une autre table.
Est-ce que en faisant new.id_membre cela va me donner ce que contient le champs de l'enregistrement qui subit l'update ou l'insert ??



N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!