Vous n'êtes pas identifié(e).
Pages : 1
Bonjour.
Je n'ai jamais eu besoin de travailler avec les triggers mais là, je dois mettre en place un trigger qui rempli un champs smallint vide avec l'année en cours.
Je souhaite donc intégrer la requête update table set annee = select date_part('year', now()) where annee is null dans un trigger after insert or update mais je ne sais pas comment faire?
Quelqu'un serait-il susceptible de m'aider?
Merci d'avance.
Résolu en mettant default = date_part('year', now())
Dernière modification par PEREZ J. (10/05/2023 16:48:33)
Hors ligne
Il ne faut surtout pas faire un UPDATE lors d'un trigger sinon votre trigger va s'appeler récursivement. Il faut simplement modifier la ligne en cours. Vous pouvez vous inspirer de l'exemple "emp_stamp" à l'adresse https://docs.postgresql.fr/15/plpgsql-t … ML-TRIGGER
Julien.
https://rjuju.github.io/
Hors ligne
en réfléchissant un peu, j'aurais dû y penser.
Par contre je n'y connais rien en PL/pgSQL mais je vais voir si je m'en sors avec quelque chose du style
if new.annee is null then new.annee = select date_part('year', now()) endif;
dans ma fonction
Hors ligne
Pourquoi ne pas utiliser une valeur par défaut à la place ? ce serait plus performant.
Guillaume.
Hors ligne
ça serait l'idéal mais je ne vois pas comment afficher l'année en cours comme valeur par défaut en postgresql
Hors ligne
De la même façon, en utilisant "date_part('year', now())" en expression pour la clause DEFAULT.
Attention toutefois, ce n'est pas exactement le même comportement qu'un trigger: la valeur par défaut, comme son nom l'indique, est uniquement utilisée pour spécifier une valeur si la requête qui insert la ligne n'en spécifie pas, mais ne garantit donc pas que la ligne contiendra l'année en cours si un utilisateur insère une ligne avec explicitement une autre année.
Julien.
https://rjuju.github.io/
Hors ligne
merci rjuju, je ne pensais pas que ça fonctionnait, j'aurais dû essayer avant.
Pas de soucis c'est bien une valeur par défaut car l'utilisateur peut saisir une autre année à l'insertion.
Hors ligne
Pages : 1