Pages: 1
- Sujet précédent - désactiver la valeur par défaut "0" d'un champ integer en cas d'update - Sujet suivant
#1 Tue 29 January 2019 19:42
- raster31
- Participant occasionnel
- Date d'inscription: 13 Oct 2016
- Messages: 21
désactiver la valeur par défaut "0" d'un champ integer en cas d'update
Bonjour à tous,
je rencontre un petit soucis... je travaille sur une base de données PostGIS (2.3) avec l'interface PgAdmin III.
J'ai des champs de type integer qui peuvent être NULL (saisie non obligatoire donc).
Lorsqu'une personne crée un objet, et qu'elle ne remplit pas tous les champs de type integer, ces derniers présentent bien la mention NULL après l'insert.
Par contre si une autre personne vient faire un update sur cet objet (spatiale ou attributaire) et qu'elle ne remplit toujours pas les champs de type integer, ces derniers ne présentent plus la mention NULL mais se remplissent automatiquement avec un 0 (zéro) or j'aimerais que cela reste à NULL.
J'imagine qu'en basculant les champs de type integer sur du character varying, je n'aurais pas ce problème mais le schéma est synchronisé avec un autre schéma où des calculs sont faits et ça créerait donc des bugs si je changeais les types.
Auriez vous des solutions à m'apporter svp !?
Hors ligne
#2 Tue 29 January 2019 22:50
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
Une colonne n'est changée qu'explicitement par un UPDATE,
j'en déduis que les mises à jour sont lancées par une application tierce,
l'éditeur de données de PG Admin ou autre.
Dans ce cas, peut être que vous pourriez changer le comportement
de votre application.
Si cela n'est pas possible :
Si la valeur 0 n'appartient pas au domaine de la colonne,
vous pouvez créer un trigger qui transformera les 0 en NULL,
ou créer une vue qui fera la même chose et que vous utiliserez
dans vos calculs à la pace de votre table.
Si par contre, 0 fait partie du domaine de la colonne, vous ne
pourrez pas distinguer les faux NULL d'une vraie valeur 0 rentrée par
l'utilisateur, à moins que vous ne puissiez le déduire avec autre chose.
Dernière modification par tumasgiu (Tue 29 January 2019 22:56)
Hors ligne
#3 Wed 30 January 2019 09:09
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
Bonjour,
quelle application est utilisée pour faire la mise à jour problématique ?
La solution est à chercher de ce coté d'abord. Une valeur non renseignée ne doit pas être transformée en une valeur non nulle...
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#4 Wed 30 January 2019 11:00
- raster31
- Participant occasionnel
- Date d'inscription: 13 Oct 2016
- Messages: 21
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
En fait c'est une base de données connectée à un portail web carto Lizmap....
Les utilisateurs peuvent faire des éditions en ligne et cela génère par le biais d'une fonction un mail automatique qui est envoyé à l'utilisateur et à l'administrateur sous forme de deux tableaux comparatifs (valeurs anciennes/valeurs nouvelles). Ainsi normalement seuls les champs qui ont été modifiés doivent être repris dans ces tableaux. Pourtant j'y retrouve à chaque fois tous les champs de type integer même si ces derniers sont restés vierges (ils passent de null à 0). (cf les 2 captures d'écran dans les messages suivants).
En me renseignant, j'ai appris que la valeur par défaut d'un champ de type integer est 0. Je pensais que c'était plus à ce niveau qu'il fallait creuser mais peut être en effet est-ce au niveau de Lizmap... Je vais continuer de chercher une solution car en effet un trigger qui ferait un replace ne conviendrait pas car 0 peut être une valeur saisie dans ces champs de type integer.
Hors ligne
#5 Wed 30 January 2019 11:05
- raster31
- Participant occasionnel
- Date d'inscription: 13 Oct 2016
- Messages: 21
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
tableau des valeurs anciennes avec les valeurs nulles
Dernière modification par raster31 (Wed 30 January 2019 11:05)
Hors ligne
#7 Wed 30 January 2019 14:24
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
Nous sommes bien d'accord que les données quand vous les consultez avec pgadmin présentent bien des 0 à la place des NULL.
De même vous confirmez que vous n'avez pas de fonction susceptible de manipuler les données (déclenchée lors de l'édition par trigger ou autre) qui pourrait expliquer la transformation de ces 0 en null ?
Si tel est le cas, le souci ne se situe coté base de données et il vous faut cherchez du coté de QGIS et de LIZMAP :
Regardez du coté de votre projet QGIS si vous n'avez pas mis une valeur par défaut 0 à vos champs de type integer.
idem pour la config de votre projet LIZMAP.
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#8 Wed 30 January 2019 14:29
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3199
- Site web
Re: désactiver la valeur par défaut "0" d'un champ integer en cas d'update
Bonjour
En me renseignant, j'ai appris que la valeur par défaut d'un champ de type integer est 0
Celui qui vous a dit ça vous a dit une co***rie. La valeur NULL est la valeur par défaut de tout les types de données. A ne pas confondre avec nulle (ou nul ) en français.
A l'évidence cela vient de votre interface lizmap, confère les propos de MathieuB. [les premiers on vient de croiser les posts]
Dernière modification par ChristopheV (Wed 30 January 2019 14:30)
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
Pages: 1
- Sujet précédent - désactiver la valeur par défaut "0" d'un champ integer en cas d'update - Sujet suivant