#1 Mon 09 August 2021 17:35
- SGREF
- Juste Inscrit !
- Date d'inscription: 13 Dec 2019
- Messages: 3
PgSQL/PostGIS - Sequence & trigger
Bonjour,
En PgSQL, j'aimerai faire appel à plusieurs séquences pour générer un ID.
Quand je dis "plusieurs" je ne sais même pas si cela est possible, je m'explique :
Il s'agit d'une table, contenant des polyognes, utilisée sur QGIS, où il y a continuellement de nouvelles entités.
J'ai besoin de générer une ID automatique qui diffère selon le département où se trouve le nouveau polygone, et qui comprendrait donc le code_insee du département. Concrètement je pensais créer une séquence par département nommée "codeinseedepartement_seq" et aller chercher la "nextval" de la séquence correspondante en récupérant le code insee du département de la nouvelle entité par st_intersects. Le tout dans une trigger function :
Code:
BEGIN UPDATE projet.test_zone zp set ID = nextval(s2.nom_sequence) FROM (SELECT s1.gid, concat('projet.',s1.code_insee_dep, '_seq') AS nom_sequence FROM (SELECT t1.gid, t2.code_insee_dep FROM projet.test_zone as t1 INNER JOIN limite.departement as t2 ON ST_Intersects(t1.geom,t2.geom) )s1 )s2 WHERE zp.gid = NEW.gid; RETURN NEW; END;
Mais visiblement ça ne fonctionne pas.
Etant complétement novice en pgsql, je me dis que je suis potentiellement complétement à côté de la plaque, j'en appelle donc à votre aide/imagination.
Merci d'avance pour vos réponses.
Hors ligne
#2 Tue 10 August 2021 09:48
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 97
Re: PgSQL/PostGIS - Sequence & trigger
Bonjour,
Essayez plutôt ce type de syntaxe (trigger sur table projet.test_zone) :
$body$
DECLARE code_insee text;
BEGIN
-- on recuperer le code insee du departement
code_insee := s1.code_insee_dep FROM limite.departement s1 WHERE st_intersects(st_centroid(NEW.geom), s1.geom);
--On l'injecte dans le NEW.ID
EXECUTE 'SELECT nextval($$'|| code_insee ||'_seq$$)' INTO NEW."ID";
RETURN NEW;
END;
$body$
Bien à vous
Hors ligne
#3 Wed 11 August 2021 08:42
- SGREF
- Juste Inscrit !
- Date d'inscription: 13 Dec 2019
- Messages: 3
Re: PgSQL/PostGIS - Sequence & trigger
Bonjour,
Merci beaucoup, cela fonctionne à merveille!
Bonne journée à vous.
Hors ligne