Bonjour,

je cherche à crée un contrainte sur une table (TINFO). En fait si une colonne (INFO_KEY) a une valeur particulière (BASE), alors je dois vérifier que la valeur d'une autre colone (INFO_FIELD) se situe bien dans les valeurs d'une colonne(BASE_TYPE) d'une autre table(TBASE).
J ene sais pas is c'est très clair, alors voici un exemple de ce que je comptais faire.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE TRIGGER TR_TINFO_CONSTRAINT BEFORE INSERT OR UPDATE ON TINFO
FOR EACH ROW
DECLARE
  LE$Fin  	exception;
BEGIN
	  IF :NEW.INFO_KEY = 'BASE' THEN
      IF :NEW.INFO_FIELD NOT IN (SELECT DISTINCT BASE_TYPE FROM TBASE) THEN 
		    RAISE LE$Fin;
      END IF;
	END IF;
END;
/
Le problème est que le select dans le if est interdit. Et j'ai beau me creuser les ménages, je ne vois pas d'autre solution.
Quelqu'un aurait-il la gentillesse de m'aider ?