Salut tout le monde!
J'utilise un trigger BEFORE en guise de contrainte check utilisant des fonctions, ce trigger contient un "if variable1 <> variable2 then" où variable1 et variable2 sont des varchar2(38). Même si c'est visiblement différent, le code passe toujours dans ELSE
Ex de démonstration:
Ça affiche toujours NOT OK!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 declare v_1 varchar2(38); v_2 varchar2(38); begin v_2 := NULL; v_1 := 'Randriano'; if (v_1 <> v_2) then dbms_output.put_line('OK'); else dbms_output.put_line('NOT OK'); end if; end;
Ça affiche toujours NOT OK aussi!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 declare v_1 varchar2(38); v_2 varchar2(38); begin if (v_1 = v_2) then dbms_output.put_line('OK'); else dbms_output.put_line('NOT OK'); end if; end
Mon trigger ne marche donc plus à tous les coups même si j'utilise = ou != à la place de <> à cause de cela:
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 DECLARE v_return int; BEGIN v_return:= IsSubGroup(:new.ID, :new.IDParentClass4) ; if (/*(v_return = 0) and */(:new.ID <> :new.IDParentClass4)) then null; else raise_application_error(-20000,'Error fatal'); end if ; END ;
Partager