J'ai une base de données dans Postgresql, qui a été migrée depuis SQL Server (uniquement les données).
Sur SQL Server, une table de cette base de données a ces colonnes:
measure_id
datum
measure
où measure_id
est la clé primaire auto-incrémentielle, datum
est datetime et measure
est float.
Après la migration à Postrgresql, measure_id
est une colonne de type bigint.
Comment puis-je modifier cette colonne (measure_id
) à bigserial et l'assigner comme clé primaire, maintenant que ma table est pleine de données?
Créez une séquence et utilisez-la comme valeur par défaut pour la colonne:
create sequence measures_measure_id_seq
owned by measures.measure_id;
alter table measures
alter column measure_id set default nextval('measures_measure_id_seq');
commit;
C'est essentiellement ce que fait serial
.
Voir le manuel pour plus de détails:
http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL