Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Tue 10 August 2021 21:13

image95
Participant assidu
Date d'inscription: 6 Sep 2014
Messages: 246

postgis trigger : table et vue matérialisée

Bonjour,

J'ai une table postgis polygones pour mes "communes".
J'ai une table ponctuelle pour mes  "forages".

J'ai créé une vue matérialisée "vm" définit par une jointure spatiale comme suit :

Code:

SELECT forages.*,
commune.gid,
commune.insee_com,
commune.nom
FROM forages, commune
WHERE st_intersects(pylone.geom, commune.geom);

Maintenant je souhaite que dès qu'une modification a lieu pour le champ "nom" de ma table de polygones "communes",
cette modification se produise également dans le champ "nom" de ma vue matérialisée.

Sauf erreur de ma part,
le trigger doit etre définit sur la table "communes" comme suit

Code:

CREATE TRIGGER communes_trigger
after  update
on commune 
FOR EACH STATEMENT. 
execute procedure trigger_fonction

Il me faut maintenant définir la fonction. C'est pour cette étape que j'ai besoin de vous, si vous le voulez bien.
Ci dessous, une proposition de structure. Mais il manque beaucoup de choses.


Code:

CREATE or replace FUNCTION  trigger_fonction
returns trigger
langage sql
AS $$
BEGIN
 if    then
update
end if ;
return new
refresh materialized view
END;
$$

Merci beaucoup.

Dernière modification par image95 (Tue 10 August 2021 21:51)

Hors ligne

 

#2 Wed 11 August 2021 11:20

Ben22
Participant actif
Lieu: 33
Date d'inscription: 11 May 2016
Messages: 95

Re: postgis trigger : table et vue matérialisée

Bonjour,

Si votre fonction est juste destinée à rafraichir les données de la vue matérialisée, vous n'étiez pas loin :

Code:

CREATE FUNCTION trigger_fonction()
    RETURNS trigger AS
BEGIN
    REFRESH MATERIALIZED VIEW vm; 
RETURN NEW;
END;
$BODY$
 LANGUAGE 'plpgsql' VOLATILE;

Dernière modification par Ben22 (Wed 11 August 2021 11:27)

Hors ligne

 

Pied de page des forums

Powered by FluxBB