bonjour,

je tiens à preciser que je suis débutante donc soyez indulgent !
voilà j'ai une table INTERVENANTS qui est la table mère d'une table INTER_INDEPENDANT et d'une table INTER_SALARIE et où jai spécifié un domaine TYPE ('SALARIE', 'INDEPENDANT')
J'ai voulu creer un trigger qui empêche la saisie dans la table INTER_INDEPENDANT si son type dans la TABLE INTERVENANTS n'est pas INDEPENDANT.

Le trigger fonctionne mais m'indique une erreur à la ligne 16 qui correspond au "END IF;" donc je ne comprends pas il me donne bien le message d'erreur de l'exception, mais me dit que ' erreur lors de l'execution du trigger...'
je ne sais pas comment utiliser le show error

voici le code
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
22
 
CREATE OR REPLACE TRIGGER INDEPEND_TRIG
BEFORE INSERT OR UPDATE ON INTER_INDEPENDANT
FOR EACH ROW
 
DECLARE
TableSuperclasse META.nomTable%type;
t varchar (20);
pb EXCEPTION;
 
BEGIN
SELECT nomTable INTO TableSuperclasse FROM META WHERE idclasse = (SELECT IdSuperclasse FROM META WHERE nomTable = 'INTER_INDEPENDANT'); 
EXECUTE IMMEDIATE 'SELECT Type FROM ' || TableSuperclasse  || ' WHERE IDINTERVRH= ' || :NEW.IDINTERVRH INTO t;
 
IF t <> 'INDEPENDANT' THEN 
RAISE pb;
END IF;
 
EXCEPTION
WHEN pb THEN
RAISE_APPLICATION_ERROR (-20501,'Violation de la contrainte d''exlusivité');
END;
merci d'avance en plus je veux le faire pour salarie !