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 25 September 2018 15:43

BenB
Participant actif
Date d'inscription: 29 Dec 2015
Messages: 120

[PostgreSQL] Trigger mise à jour données

Bonjour,

je réalise un trigger pour remplir automatiquement deux champs d'une table de ponctuel en fonction d'une table de référence


Voici le trigger :

Code:

CREATE OR REPLACE FUNCTION etude_epode.trigger_espece_faune()
  RETURNS trigger AS
$BODY$

BEGIN
IF NEW.cd_nom is not null then
  select r.nom_vern, r.lb_nom from ref_inpn.taxref_faune r
  where NEW.cd_nom=r.cd_nom


  into NEW.nom_vernaculaire, NEW.nom_scientifique;

 END IF ;  
Return NEW;
END
 $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

et son application sur la table

Code:

CREATE TRIGGER nom_especes
  BEFORE INSERT OR UPDATE
  ON etude_epode.observation_faune
  FOR EACH ROW
  EXECUTE PROCEDURE etude_epode.trigger_espece_faune();

Donc quand un point est créé et un cd_nom indiqué les colonnes  nom_vernaculaire  nom_scientifique se complètent correctement

Par contre quand je modifie le cd_nom d'un point existant les colonnes nom_vernaculaire et nom_scientifique ne se mettent pas à jour.

Je rencontre le même problème pour des trigger de surface : la surface ne se met pas à jour quand la géométrie du polygone est modifiée.

Merci pour votre aide;

Bonne journée

Hors ligne

 

#2 Tue 25 September 2018 17:22

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: [PostgreSQL] Trigger mise à jour données

Salut,

dans un premier temps vous pourriez utiliser la commande RAISE
afin de faire des remontées d'erreurs pour essayer de déterminer ce qui cloche.

Hors ligne

 

#3 Tue 25 September 2018 17:37

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: [PostgreSQL] Trigger mise à jour données

Sinon,

je l'ai déjà dit dans des sujets similaires mais
votre cas d'utilisation est typiquement celui d'une vue avec possibilité de mise à jour,
utiliser des triggers dans ce cas étant souvent considérée comme une mauvaise pratique.

http://www.postgresqltutorial.com/postg … ble-views/

Dernière modification par tumasgiu (Tue 25 September 2018 17:45)

Hors ligne

 

#4 Wed 26 September 2018 16:18

BenB
Participant actif
Date d'inscription: 29 Dec 2015
Messages: 120

Re: [PostgreSQL] Trigger mise à jour données

Bonjour,

j'utilise déjà des vues dans cette base, mais j'ai vraiment besoin de faire ça directement dans les tables; Car les agents font des modifications et ont besoins de voir ces infos a jours dans la même table attributaire et non dans des vues a part.

Hors ligne

 

#5 Wed 26 September 2018 19:20

haubourg
Participant assidu
Lieu: Grenoble
Date d'inscription: 7 Sep 2005
Messages: 257
Site web

Re: [PostgreSQL] Trigger mise à jour données

BenB, un des principes d'organisation de base de données lorsque l'on commence à y intégrer de la logique métier, est d'organiser sa base comme du code. Une solution pour cela est de n'exposer que des vues éditables aux clients, donc surtout ne pas laisser QGIS accéder directement aux tables.
Les vues éditables avec triggers INSTEAD OF sont beaucoup plus simples à maintenir et gérer dans le temps que des triggers sur des tables.

Hors ligne

 

Pied de page des forums

Powered by FluxBB