Bonjour,
J'essaye de créer mon premier trigger et je m'arrache un peu les cheveux..
J'ai essayé avec phpPgAdmin et directement en ligne de commande avec psql.. mais il ne veut rien savoir..
Bon, j'ai une table "dossiers" et une "ligne_facture" dans un schema "clients_dossiers"
L'idee du trigger est tres simple.. a chaque insertion, (et dans l'ideal pour la suite, pour chaque update ou delete aussi...), je veux mettre a jour le champ "total" dans la table "dossiers" avec le montant declare dans "ligne_facture"..
Le 1er argument est le montant unitaire, le 2eme, le nombre et le 3e, l'id dossier..
Donc :
CREATE FUNCTION calcul_total (numeric, integer, integer) RETURNS OPAQUE AS '
BEGIN
UPDATE dossiers SET total=total+($1*$2) WHERE id_dossier=$3;
END;
' LANGUAGE plpgsl;
la, il me sort
"CREATE FUNCTION" donc ca a du marcher ?
Apres je cree mon trigger :
CREATE TRIGGER trg_calcul_total AFTER INSERT ON ligne_facture FOR EACH ROW EXECUTE PROCEDURE calcul_total(montant_unitaire,nb,id_dossier);
Et la, j'ai deux fois la meme erreur d'affichée :
ERROR : function calcul_total() does not exists
Et en passant par phpPgAdmin.. pas mieux !
Alors comment faire ?
Et autre question, pendant que j'y suis.. quand j'appelle la fonction depuis un trigger, je peux passer les parametres comme je l'ai fait ci dessus, en nommant les colonnes a utiliser ?
Merci de m'aider.. je suis un peu paumé.. j'ai toujours bossé avec mysql.. et ca n'a rien a voir.. ou presque !
Partager