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 29/01/2020 17:08:20

rmayou
Membre

Modification du nom de la colonne gid

Hello tout le monde,


J’aurai une question au sujet du renommage du champs gid.   
Je souhaiterai renommer gid en id.   
Pour se faire j’ai tout d’abord procéder à ce renommage en allant dans les propriétés de la table et en modifiant la colonne gid. Déjà à cette étape je remarque une chose curieuse, c’est que le type de données du gid est de l’integer. Alors que dans le sql de la table il est bien spécifié que c’est du serial. Il s’avère qu’en modifiant le nom et seulement le nom gid pour id et en acceptant les modifications, j’ai mon type de donnée qui passe de serial à integer.   
En soit malgré ce changement, le comportement de la colonne est normal et elle réagit toujours en conséquence de ce qui est renseigné dans sa séquence.


Ma première question est donc : Est-ce qu’il y a un risque à garder une telle configuration pour un champ aussi important qui constitue en plus ma clé primaire ?


Comme solution alternative, j’ai pensé à créer une nouvelle colonne id, avec serial en type de données. Dans la foulé est créé sa séquence par postgres. N’ayant plus d’utilité pour gid je le supprime et désigne ma colonne id comme nouvelle clé primaire de la table.
Mais j’ignore si ce genre de manips peut occasionner des dommages dans la table… Auriez-vous d’autres suggestions ou remarques ?


Je vous remercie.


Rémi

Hors ligne

#2 29/01/2020 18:52:49

dverite
Membre

Re : Modification du nom de la colonne gid

Comme la doc le dit ici:

https://docs.postgresql.fr/12/datatype. … ype-serial

SERIAL n'est pas un vrai type de données, le type correspondant  est integer (ou int4 ou int c'est pareil).

Ce qui est important à conserver c'est la clause DEFAULT. C'est elle qui fait le lien avec la séquence créée automatiquement quand on utilise SERIAL.

Au passage psql n'affiche pas serial mais int comme type de colonne:

test=> create table public.test(id serial);
CREATE TABLE
test=> \d public.test
                               Table « public.test »
 Colonne |  Type   | Collationnement | NULL-able |            Par défaut            
---------+---------+-----------------+-----------+----------------------------------
 id      | integer |                 | not null  | nextval('test_id_seq'::regclass)

L'outil que vous utilisez affiche SERIAL probablement en comparant le nom de la séquence avec le nom de la colonne, c'est pourquoi en changeant le nom de la colonne sans changer le nom de la séquence il arrête d'afficher SERIAL.

Dernière modification par dverite (29/01/2020 18:53:28)

Hors ligne

#3 30/01/2020 09:51:22

rmayou
Membre

Re : Modification du nom de la colonne gid

Bonjour dverite,

Merci pour les explications, c'est clair et net, j'ai pu vérifier de mon côté.

Bonne journée.

Hors ligne

Pied de page des forums