Dans la table « Appartenance » lier A, B, C et D au carré et les autres points au rectangle.
J'ai écris un déclencheur qui indique que la valeur saisie est incorrecte lorsque l’on insère un point qui
existe déjà dans la table (parce qu’un point ne peut appartenir qu’à une seule figure).

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
23
24
25
26
27
28
29
CREATE OR REPLACE FUNCTION public.verif_appartenance()
 RETURNS trigger AS
$BODY$
BEGIN
    DECLARE existedeja INTEGER;  
 
 
    SELECT EXISTS( SELECT * 
      FROM Appartenance
      WHERE labelPoint = NEW.labelPoint
    ) INTO existedeja;
 
 
 
    IF existedeja THEN
        erreur('impossible, Point déjà pris!')
    END IF;
END;
$BODY$
  LANGUAGE plpgsql
    COST 100;
ALTER FUNCTION public.verif_appartenance()
  OWNER TO postgres;
 
 
CREATE TRIGGER verif_appartenance
BEFORE INSERT ON Appartenance      
FOR EACH ROW
EXECUTE PROCEDURE verif_appartenance()
Il me retourne un message d'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ERREUR:  erreur de syntaxe sur ou près de « EXISTS »
LINE 8:     SELECT EXISTS( SELECT * 
                   ^
CONTEXT:  nom de type « EXISTS( SELECT * 
      FROM Appartenance
      WHERE labelPoint  » invalide
********** Erreur **********
 
ERREUR: erreur de syntaxe sur ou près de « EXISTS »
État SQL :42601
Caractère : 146
Contexte : nom de type « EXISTS( SELECT * 
      FROM Appartenance
      WHERE labelPoint  » invalide