#1 Mon 30 September 2019 11:31
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
[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: 995
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: 199
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: 1160
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: 199
Re: [postgres] valeur colonne = formule
Merci tumasgiu !
Je vais tester ça
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