Bonjour,

J'ai un petit problème avec mon trigger...
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
SET TERM ^ ;
CREATE OR ALTER TRIGGER VERIF_CLASSE_COD_PROD FOR COD_PROD
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE NB INTEGER;
BEGIN
  IF (OLD.CLA_ID = 4) THEN
  BEGIN
    SELECT COUNT(COD_ID) FROM COD_PROD WHERE CLA_ID <> 4 AND PRO_ID = OLD.PRO_ID AND ENT_ID = OLD.ENT_ID INTO NB;
    IF (NB <> 0) THEN
       EXCEPTION INS_CODBAR_NC_ERROR;
  END
  ELSE
  BEGIN
    SELECT COUNT(COD_ID) FROM COD_PROD WHERE CLA_ID = 4 AND PRO_ID = OLD.PRO_ID AND ENT_ID = OLD.ENT_ID INTO NB;
    IF (NB <> 0) THEN
       EXCEPTION INS_CODBAR_ERROR;
  END
END;
SET TERM ^ ;
Le message d'erreur me dit: "Champ OLD inconnu" alors que ce trigger fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
SET TERM ^ ;
CREATE OR ALTER TRIGGER VERIF_DELETE_CATEGORIA FOR CATEGORIAS
ACTIVE BEFORE DELETE POSITION 0
AS
DECLARE VARIABLE NB_ESPECE INTEGER;
BEGIN
  SELECT COUNT(ESP_ID) FROM ESPECIES WHERE CAT_ID = OLD.CAT_ID INTO NB_ESPECE;
IF (NB_ESPECE <> 0) THEN
   EXCEPTION DEL_CAT_ERROR_FK;
END;
SET TERM ^ ;
La seule différence est que dans le premier cas j'utilise le champ OLD en dehors de la requête...

Quelqu'un a une idée ?


Cyril