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 :
le code erreur correspond à :
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
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
Partager