Comment créer un trigger after update pour modifier un autre champ ?
J'ai une table LCLTICKET, et je souhaiterais que quand la valeur de son champ LTKE_STATUS passe à 2, un trigger se déclenche pour mettre une valeur dans le champ LTKE_NUMERO (s'il est null ou à 0).
Voici mon trigger (je me suis inspiré de https://www.postgresql.org/docs/9.3/...tetrigger.html):
Code:
1 2 3 4 5 6
| CREATE TRIGGER trg_ltke_after_update
AFTER UPDATE OF ltke_status
ON lclticket
FOR EACH ROW
WHEN ((((new.ltke_status)::integer = 2) AND ((new.ltke_numero IS NULL) OR ((new.ltke_numero)::integer = 0))))
EXECUTE PROCEDURE next_ltke_numero(); |
Et la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| CREATE OR REPLACE FUNCTION next_ltke_numero()
RETURNS trigger AS
$BODY$
DECLARE
nextnum integer;
BEGIN
if(new.LTKE_STATUS = 2) then
nextnum := 0;
select max(ltke_numero) into nextnum
from LCLTICKET
where LTKE_STATUS = 2
and LTKE_LSESID = new.LTKE_LSESID;
if(nextnum is null) then
nextnum = 0;
end if;
nextnum := nextnum + 1;
new.ltke_numero = nextnum;
end if;
return new;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100; |
Mais, quand je passe le statut à 2, le numéro ne change pas. :calim2:
Qu'est ce que j'ai mal fait ?
:hola: