Bonjour,
Je doit réaliser un trigger qui doit vérifier l'existence ou nom d'une valeur dans une table et renvoyer un message d’erreur
Je suis partit dans la rédaction du script ci dessous:

Code SQL : 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 TRIGGER VERIF_NC
  BEFORE UPDATE OF ST_ETA ON BT
 for each row
DECLARE 
 CURSOR udi_nc IS
 select gro.id_numgro  from BT 
left outer join EQU on BT.ID_NUMEQU = equ.id_numequ
left outer join GRO on EQU.ID_NUMGRO = gro.id_numgro
where BT.ST_ETA ='NC';
 
udi char(50);
numbt char(50);
 
 
BEGIN
open udi_nc;
numbt := :new.id_numbt;
select gro.id_numgro INTO udi from  BT,EQU,GRO 
where BT.ID_NUMEQU = equ.id_numequ and 
 EQU.ID_NUMGRO = gro.id_numgro and BT.ID_NUMBT = numbt;
 
if udi IN udi_nc then
raise_application_error (- 20002, "NC en cours");
END IF;
close udi_nc;
END;

Je pense que cela bloque à la comparaison entre ma variable udi et les données du cuseur udi_nc.
C'est la première fois que j'utilise un curseur car l'utilisation d'une sous requête ne marche pas dans le trigger.
Pour info je débute en PL/SQL mais cela doit se voir!