Bonjour à tous, j'ai un problème avec un trigger que j'essaye de créer sous Oracle 10G Express.
J'ai une table qui représente les frontières entre 2 pays de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Borders[country1,country2,length]
Et je voudrais que si la ligne (A,B,x) existe dans la table on ne puisse pas insérer les valeurs (B,A,x).

Sauf erreur de ma part , le trigger est la seul solution pour gérer ce type de doublons, j'ai donc essayer de créer un trigger :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE OR REPLACE TRIGGER check_doublons
    BEFORE INSERT ON Borders
FOR EACH ROW
DECLARE country1 NUMBER(15);
	country2 NUMBER(15);
BEGIN
     IF :NEW.country1 = NEW.country2 THEN 
	IF:OLD.country2 = NEW.country1
	  THEN
            RAISE_APPLICATION_ERROR(-20555, 'Le couple inverse existe déja !'); 
	END IF;
     END IF;
END
Mais lorsque que je déclare ce trigger j'obtiens le code d'erreur :
ERREUR à la ligne 4 : PLS-00201: l'identificateur 'OLD.COUNTRY2' doit être déclaré

J'ai du mal a voir l'erreur, peut etre y a t-il quelque chose que j'ai mal compris.

Merci d'avance pour votre aide