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;
Nom : Capturedevelop1405.PNG
Affichages : 209
Taille : 40,9 Ko

Mais je pense que le DATE_PART est mal écrit??