Bonjour à tous,
J'ai crée un trigger qui se declence a la suppression d'un ligne de la table service que voici :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| CREATE OR REPLACE TRIGGER T1
BEFORE DELETE ON SERVICE
FOR EACH ROW
DECLARE
CURSOR C IS SELECT IDPERSONNE,Profession,Service FROM EMPLOYE WHERE SERVICE=:OLD.IDSERVICE;
PERS EMPLOYE.IDPERSONNE%TYPE;
PROF EMPLOYE.PROFESSION%TYPE;
SERVICE EMPLOYE.SERVICE%TYPE;
BEGIN
OPEN C;
FETCH C INTO PERS,PROF,SERVICE;
INSERT INTO CANDIDAT VALUES (PERS, PROF);
DELETE EMPLOYE WHERE SERVICE=(:OLD.IDSERVICE) AND
IDPERSONNE=PERS;
UPDATE
END;
/ |
le code fonctionne bien..Si il n'y a qu'un employé qui travaille dans ce service. Lorsqu'il y en a 2 ca plante avec cette erreur :
Violation de contrainte d'integrité - Enregistrement fils existant
Je dois faire une erreur quelque part dans mes boucles ou je ne sais pas.
Merci
Partager