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 Re : Général » Valeur vide / NULL dans un champ de type numérique » 31/08/2010 17:33:31

Merci à tous de vous être penchés sur le probleme.
Nous avons posé la question sur d'autres forums, il n'y a apparement pas de solution simple / rapide, nous allons probablement voir avec le client pour utiliser un autre SGBD en attendant une future version de l'application qui corrigera le code SQL.
Cordialement.

#2 Re : Général » Valeur vide / NULL dans un champ de type numérique » 31/08/2010 16:19:56

Merci pour vos réponses.

Nous n'avons aucun souci sous MySQL, Oracle ou SQL Server pour insérer une chaine vide dans un champ numerique, il n'y a que postgreSQL qui nous pose ce probleme.

@Marc Cousin : la version utilisée est la 8.4. Le lien que vous m'avez donné pour CREATE CAST est bien pour la 8.4

J'ai regardé la documentation, je ne suis pas certain d'avoir bien compris.

En gros il faudrait creer un type perso (par exemple mynumeric) et l'assigner a tout mes champs de type numeric, c'est a dire modifier la structure de toutes mes tables ?

puis faire un CREATE CAST (toto AS numeric) WITH FUNCTION doMyCast(toto) AS IMPLICIT;

avec le code de la fonction equivalent à :

function doMyCast(toto)
{
if (toto =='') {
return NULL
} else {
return toto
}
}

et cette "conversion/transtypage" serait automatique sur toute la base ?

Je ne comprends pas .



@flo : Nous avons pensé à la solution du trigger mais il faudrait mettre un trigger sur toutes les tables, il y en a beaucoup c'est lourd, et celà affecterait beaucoup les performances .



Merci de votre aide.

#3 Re : Général » Valeur vide / NULL dans un champ de type numérique » 31/08/2010 14:43:02

Merci pour votre réponse.

Marc Cousin a écrit :

À quelle valeur numérique pourrait on faire correspondre une chaîne vide ?

J'aimerais que celà correspond à NULL.

Je sais que le probleme viens du code SQL, on me le dit sur plusieurs forums,  l'application est ancienne et je n'ai pas les moyens d'optimiser tout le code SQL de l'application pour le moment, c'est pour ça que je souhaiterais trouver une solution ou un hack en attendant de pouvoir le faire.

Marc Cousin a écrit :

Sinon oui, on doit pouvoir bidouiller un type qui accepte des conversions de chaîne de ce type.

Je n'ai pas trouvé comment faire, quelqu'un aurait il un exemple ?

Merci de votre aide.

#4 Général » Valeur vide / NULL dans un champ de type numérique » 31/08/2010 13:57:27

Esab75
Réponses : 10

Bonjour,

J'aurais besoin de votre aide SVP.

Nous avons une application PHP tournant sous MYSQL, et nous avons besoin d'utiliser PostgreSQL pour un client.

le probleme est que lorsque nous insérons des chaines vides dans un champ de type numerique, nous obtenons une erreur.

Je pense qu'il faudrait en fait utiliser NULL au lieu de la chaine vide .

Cependant nous aimerions eviter d'avoir à recoder toutes les requetes de notre application, ma question c'est de savoir s'il est possible au niveau de la structure d'une table (ou ailleur) de faire en sorte que notre colonne de type numérique accepte les valeurs vides ? ou bien les convertissent en NULL ?


J'ai regardé sur le forum, ainsi que sur google je n'ai pas trouvé grand chose.

Dans la documentation j'ai vu qu'il est possible de définir ses propres types, est il possible par exemple de creer un type basé sur numerique et de faire en sorte qu'il accepte nos valeurs vides ?
Si oui comment faire ? je n'ai trouvé de solution

Merci

Pied de page des forums

Propulsé par FluxBB