Bonjour à tous,
j'ai un problème pour la gestion d'héritage par trigger sur ma base de données.

Il y a 2 table, Support, et DVD (table fille).
support(ref,date_sortie,prix,duree,url,nb_dl)
dvd(#ref,titre,syn)
Le champ ref de support est auto incrementer.

Ces 2 tables sont jointer dans la vue "vuedvd".

Mes professeurs me demandes de gérer cet héritage par trigger.

J'ai fait le trigger ci-dessous :

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
-- ---- Fonction
CREATE OR REPLACE FUNCTION "Fct_InsertDvd"()
	RETURNS trigger AS
$BODY$
BEGIN
	INSERT INTO support(date_sortie,prix,duree,url,nb_dl)
	VALUES (NEW.date_sortie,NEW.prix,NEW.duree,NEW.url,NEW.nb_dl)
	RETURNING ref AS id;
	INSERT INTO dvd(ref,titre,syn)
	VALUES (id,NEW.titre,NEW.syn);
END
$BODY$
	LANGUAGE plpgsql VOLATILE
	COST 100;
ALTER FUNCTION "Fct_InsertDvd"()
	OWNER TO postgres;
-- ---- Trigger
CREATE TRIGGER InsertDvd
	INSTEAD OF INSERT ON vuedvd
	FOR EACH ROW
	EXECUTE PROCEDURE "Fct_InsertDvd"();

et lorsque j'envoie ma requête dans PgAdmin, j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ERREUR:  la requête n'a pas de destination pour les données résultantes
État SQL :42601
CONTEXT:  fonction PL/pgsql « Fct_InsertDvd », ligne 3 à instruction SQL
le code erreur correspond à :
42601 - Un caractère, une marque ou une clause est incorrect ou absent.

Mais je ne vois pas ce qui est incorrect ou absent ... o.O