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 : 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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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