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):Et la procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();Mais, quand je passe le statut à 2, le numéro ne change pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Qu'est ce que j'ai mal fait ?
Partager