Vous n'êtes pas identifié(e).
Pages : 1
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
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".
Julien.
https://rjuju.github.io/
Hors ligne
Merci beaucoup.
J'y avais pas pensé.
Résolu
Hors ligne
Pages : 1