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 Fri 11 February 2022 10:22

croy
Juste Inscrit !
Date d'inscription: 16 Dec 2021
Messages: 4

Postgre - auto incrémentation en fonction de la valeur d'une colonne

Bonjour à tou.te.s,
J'ai une table "terrier" dans une base postgre/postgis et j'essaye de remplir un champ cdterrier qui aurait ce format "idparcelle_nextvalue", le nexvalue s'incrémenterait de +1 en fonction de l'id de la parcelle, ex : si je saisis un premier terrier dans la parcelle 781, le cdterrier s'incrémentera avec 781_1, puis si je saisis un terrier dans la parcelle 825, alors le cdterrier s'incrémentera avec 825_1, puis si je saisis un second terrier dans la parcelle 825,  alors le cdterrier s'incrémentera avec 825_2, etc.
Je pensais le faire avec un trigger et une (ou plusieurs?) séquence mais je n'arrive pas à trouver le moyen d'incrémenter le serial en fonction de l'idparcelle.
Si vous avez une idée, je suis preneur.
Merci d'avance,
Cédric

Hors ligne

 

#2 Fri 11 February 2022 11:21

jmarsac
Participant assidu
Lieu: NICE
Date d'inscription: 26 Oct 2005
Messages: 567
Site web

Re: Postgre - auto incrémentation en fonction de la valeur d'une colonne

Bonjour

Dans votre cas, je n'utiliserai pas de séquence (je suppose que vous ne voulez pas de trous dans votre numérotation) mais uniquement un trigger "AFTER". Charge à vous de déterminer le n+1.

Remarque: vous utilisez PostgreSQL ou Postgres mais pas Postgre smile


Jean-Marie
Azimut

Hors ligne

 

#3 Fri 11 February 2022 12:28

croy
Juste Inscrit !
Date d'inscription: 16 Dec 2021
Messages: 4

Re: Postgre - auto incrémentation en fonction de la valeur d'une colonne

Bonjour Jean-Marie,
Merci pour votre réponse,
Voici comment j'ai procédé pour arriver à ce que je voulais.

Code:

UPDATE app_hamster.met_terrier
        SET cd_terrier = concat(id_parcelle,'_',(select count(*) from app_hamster.met_terrier
                                    WHERE ST_intersects (met_terrier.geom, met_parcelle.geom)
                                GROUP BY met_parcelle.id_parcelle))
                    FROM app_hamster.met_parcelle
                    WHERE ST_intersects (met_terrier.geom, met_parcelle.geom)
                          AND cd_terrier is null;

Le UPDATE fonctionne bien, il faut que je créé le trigger avec celui-ci

Cédric

Dernière modification par croy (Fri 11 February 2022 12:29)

Hors ligne

 

Pied de page des forums

Powered by FluxBB