Fonction trigger sur postgresql
bonjour à tous, j'ai besoin d'aide sur postgresql.
je souhaite creer une fonction qui avant d'inserer une donnée dans une table verifie d'abord si la donnée existe: si oui elle fait un update, sinon elle fait l'insertion.
et ensuite je creer un trigger sur l'insertion de la table: avant chaque insertion dans la table on execute d'abord la fonction.
voici ce que j'ai essayer de faire:
Code:
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 30
|
CREATE FUNCTION mj (cle INT primary key , donnee varchar) RETURNS TRIGGER AS
'
BEGIN
LOOP
UPDATE teste SET nc = donnee WHERE idteste = cle;
IF found THEN
RETURN;
END IF;
BEGIN
INSERT INTO teste(idteste,nc) VALUES (cle, donnee);
RETURN;
EXCEPTION WHEN unique_violation THEN
END;
END LOOP;
END;
end ;
'
LANGUAGE plpgsql;
CREATE TRIGGER mjtest
BEFORE INSERT ON teste
FOR EACH ROW
EXECUTE PROCEDURE mj () ; |
et j'ai ce message d'erreur :
Code:
1 2 3 4 5
|
les fonctions triggers ne peuvent pas avoir des
arguments déclarés
Hint: Les arguments du trigger peuvent
être accédés via TG_NARGS et TG_ARGV à |
quelqu'un a une idée sur comment je peux gérer ce problème? svp et merci d'avance