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 : 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();
Et la procédure :
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;
Mais, quand je passe le statut à 2, le numéro ne change pas.
Qu'est ce que j'ai mal fait ?