Bonjour,
Comme l'indique le titre j'essaie d'adapter ce trigger simple MySQL vers PostGreSQL(pour calculer l'âge en années en fonction de la date de naissance et la date du jour):
Dans MySQL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CREATE DEFINER=`root`@`%` TRIGGER `patient_age_insert` BEFORE INSERT ON `patient` FOR EACH ROW BEGIN IF (NEW.`age` IS NULL) THEN SET NEW.`age` = timestampdiff(YEAR,NEW.`birthdate`,now()); END IF; END
Dans Pg je créé une fonction en premier qui appellera le trigger mais je suis bloqué:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE FUNCTION patient_age_insert() RETURNS trigger AS $$ BEGIN IF (NEW.age IS NULL) THEN SET NEW.age = DATE_PART('year', 'NEW.birthdate'::date) - DATE_PART('year', 'CURRENT_DATE'::date);; END IF; RETURN NEW; END $$ LANGUAGE plpgsql;
Mais je pense que le DATE_PART est mal écrit??
Partager