PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/04/2022 12:45:16

Lamethode
Membre

Problème de stabilité

Bonjour à tous,
Je souhaite concatener un champ de type entier avec une lettre de l'alphabet sous postgres 13.
Quand bien même je pense qu'on peut concatener une chaîne et une non-chaîne tel que mentionné dans la documentation, je suis confronter à un problème de stabilité.
Ci-dessous mon code et l'erreur
CREATE TABLE "Test"
(
   
    "Champ1" Integer NOT NULL
    ,"Champ2" Varchar (20) GENERATED ALWAYS AS
        (CASE WHEN "Champ1" > 0 THEN 'A' || "Champ1" ELSE "Champ1"|| 'NS' END) STORED
    ,"Champ3" character varying(20)
    ,"Champ4" Numeric
);

ERROR: ERREUR:  l'expression de génération n'est pas immuable


SQL state: 42P17

Merci de m'aider.

Hors ligne

#2 27/04/2022 13:03:44

rjuju
Administrateur

Re : Problème de stabilité

Bonjour,


Le problème est lié au fait que l'opérateur de concaténation entre un text et autre chose n'est que stable (et non immutable), car la conversion de l'autre type vers un text pourrait dépendre de paramètres dynamiques (style time zone).  Dans votre cas la conversion d'un integer vers un text est immutable, donc vous devriez pouvoir le forcer avec un cast("Champ1" AS text) à la place de "Champ1".

En ligne

#3 27/04/2022 19:33:47

Lamethode
Membre

Re : Problème de stabilité

Merci beaucoup.
J'y avais pas pensé.
Résolu

Hors ligne

Pied de page des forums