Bonjour,

Je souhaiterais créer un trigger pour calculer automatiquement les longueurs de mes polylignes lors des mises à jours.

J'ai utilisé un code mais cela ne fonctionne pas

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE OR REPLACE FUNCTION champ_longueur() RETURNS trigger AS
$BODY$
 
BEGIN
NEW.LENGTH := ST_Length(NEW.geom);
RETURN NEW;
END;
 
$BODY$
LANGUAGE plpgsql;
 
CREATE TRIGGER maj_champ_longueur
BEFORE INSERT OR UPDATE ON lignes
FOR EACH ROW EXECUTE PROCEDURE champ_longueur();


Lors de modifications sous QGIS, j'ai un message d'erreur et pas de mise à jour

Je recois ce message d'erreur :

Impossible de valider les changements pour la couche lignes

Erreurs : ERREUR : 1 géométrie non-modifiée.

Erreur du fournisseur de données :
Erreur PostGIS lors de la modification de géométrie : ERREUR: l'enregistrement « new » n'a pas de champs « length »
CONTEXT: fonction PL/pgsql champ_longueur(), ligne 4 à affectation