Hello,
J'ai du mal à comprendre ton code mais un truc qui me semble bizaroïde c'est ton :
SET :new.fonction := ... OR set :new.fonction :=
Ce qui me choque ou plutôt m'interpelle c'est deux affectation sur la même ligne.
Ne chercherais-tu pas plutôt à faire ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
CREATE OR REPLACE TRIGGER VerifDateNaiss
BEFORE INSERT OR UPDATE OF NaissanceDate
ON employe
FOR EACH ROW
BEGIN
IF (:NEW.Service = 'Administratif')
AND (:new.Fonction = 'Secrétaire' OR :new.Fonction = 'Comptable')
THEN
NULL;
ELSIF :NEW.Service = 'Surveillance'
AND (:new.Fonction = 'Surveillant' OR :new.Fonction = 'chefDeZone')
THEN
NULL;
ELSIF :NEW.Service = 'Médicale'
AND (:new.Fonction = 'Véterinaire' OR :new.Fonction = 'infirmier ')
THEN
NULL;
ELSE
RAISE_APPLICATION_ERROR (
-20002,
'les fonctions ne sont pas cohérents avec les services ');
END IF;
END; |
Sans doute à écrire un peu mieux. Avoir des NULL comme instruction pour ne rien faire entre les IF c'est pas TOP.
J'espère que l'idée générale t'aidera.
Cordialement,
Bernard
Partager