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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Mon 30 September 2019 11:31

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

[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: 193

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: 1129

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: 193

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