PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 21/01/2013 12:14:40

doha-i2m
Membre

fonction trigger nécessitant des arguments

Bonjour à tous,
j'ai une fonction qui s'applique à tous les tables de la base : 

CREATE OR REPLACE FUNCTION verifier_coherence(text,geometry,text,geometry)
  RETURNS trigger AS'   
declare
rel text[3];
rec record;
R text;

begin
delete from contraintes_reduits;
insert into contraintes_reduits(idc,classe_obj1,classe_obj2,relation_topo,specification,condition_permis)
select idc,classe_obj1,classe_obj2,relation_topo,specification,condition_permis from contraintes where classe_obj1=$1;

rel=relate_obj($1,$2,$3,$4);
for rec in select relation_topo from contraintes_reduits where classe_obj2=$3
loop
select relation_topo into R from contraintes_reduits where classe_obj2=$3;
if (rel[2]=R or rel[2]=''disjoint'')
then
RAISE NOTICE 'Ajout est valide';
else
RAISE EXCEPTION 'Erreur: relation invalide';
end if;
end loop;
Return new;
END;
'LANGUAGE 'plpgsql';

Je veux exécuter cette fonction en tant que trigger :
CREATE TRIGGER verifier_ajout AFTER INSERT ON small_roads
EXECUTE PROCEDURE vérifier_coherence();

Mais la fonction trigger ne peux pas avoir des arguments, je n'ai pas d'idées comment utiliser ces paramètres (text,geometry,text,geometry) qui sont nécessaires pour la fonction.
Normalement vous n'avez pas besoin de comprendre le contexte de la fonction, je veux juste savoir s'il y a une solution pour ces paramètres, j'ai trouver dans des tuto une variable appelée TG_ARGV[] mais il n'y a pas d'exemples pour comprendre comment l'utiliser, j'ai essayer de l'appliquer mais toujours   il y a des erreurs.
Merci.

Hors ligne

#2 21/01/2013 12:50:57

gleu
Administrateur

Re : fonction trigger nécessitant des arguments

Une fonction trigger peut avoir des arguments. Il faut les indiquer lors de l'ajout du trigger à la table.

Ceci dit, si vous cherchez à récupérer les valeurs de la nouvelle ligne, il ne faut pas passer par des arguments mais par la variable NEW.

Si vous avez des erreurs, merci de nous les donner, ce sera bien plus simple.


Guillaume.

Hors ligne

Pied de page des forums