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 Mon 30 September 2019 11:31

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

[postgres] valeur colonne = formule

Bonjour,

j'ai des colonnes au sein d'une table auxquelles je souhaite appliquer des formules (genre colonne1= concaténation (left(colonne2,2), colonne 3).  Est-ce qu'il faut que je passe par une fonction de type AFTER INSERT/UPDATE ou bien il y'a  plus rapide (je travail avec pgadmin) ?

Hors ligne

 

#2 Mon 30 September 2019 12:32

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 981

Re: [postgres] valeur colonne = formule

Le plus simple / rapide peut être de passer par une vue ?

Code:

CREATE VIEW nom_schema.nom_vue AS
    SELECT    t.*,
            left(colonne2,2) || colonne3 as colonne1
    FROM nom_schema.nom_table as t

Sylvain M.

Hors ligne

 

#3 Mon 30 September 2019 13:28

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

Re: [postgres] valeur colonne = formule

Bonjour,

Non je ne peux pas passer par une vue ( je travail avec géoconcept et les vues sont mal supportées par le logiciel dans le cadre des mises à jours journalisé). Je me demandais juste si il était possible par exemple de  mettre une formule comme valeur par défaut par ex.

Hors ligne

 

#4 Mon 30 September 2019 13:42

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

Re: [postgres] valeur colonne = formule

Salut,

comme valeur par défaut c'est tout à fait possible.
Exemple :

Code:

create temp table bar(v text, i double precision default random());
INSERT INTO bar(v) VALUES ('toto'), ('tata');
SELECT * FROM bar;

Une troisième solution serait de créer une "colonne" calculée
avec une fonction comme suit :

Code:

CREATE OR REPLACE FUNCTION ma_colonne_calculée(t ma_table) 
RETURNS INTEGER
AS $$
.. code du calcul de la fonction
$$ LANGUAGE ...

(Cette fonction prend comme argument une ligne de ma_table,
dans le corps de la fonction on a accès à toutes ses colonnes)

Ensuite on tire parti du fait qu'il existe une façon alternative d'appeler ce genre de fonction
dans postgresql :

Code:

SELECT m_table.ma_colonne_calculée
FROM m_table;

Comme toute colonne calculée, celle-ci ne peut pas être mise à jour
puisqu'elle n'est que le résultat d'un calcul dépendant des autres colonnes

Dernière modification par tumasgiu (Mon 30 September 2019 14:24)

Hors ligne

 

#5 Mon 30 September 2019 14:27

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 195

Re: [postgres] valeur colonne = formule

Merci tumasgiu !

Je vais tester ça smile

Hors ligne

 

#6 Mon 30 September 2019 15:31

RemiS
Participant occasionnel
Date d'inscription: 12 Oct 2011
Messages: 21

Re: [postgres] valeur colonne = formule

Tu peux aussi affecter cette fonction à un Trigger qui peut être déclenché à chaque insertion ou mise à jour de table, t'assurant ainsi qu'a chaque ligne ta colonne calculé existe bien.

Hors ligne

 

Pied de page des forums

Powered by FluxBB