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