PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgresql change le type de colonne de int en UUID

Vous ne pouvez pas simplement convertir un int4 en uuid; ce serait un uuid invalide, avec seulement 32 bits définis, les 96 bits supérieurs étant zéro.

Si vous souhaitez générer de nouveaux UUID pour remplacer entièrement les entiers, et s'il n'existe aucune référence de clé étrangère à ces entiers, vous pouvez utiliser un faux transtypage qui génère en fait de nouvelles valeurs.

Ne pas exécuter ceci sans sauvegarde de vos données. Il supprime définitivement les anciennes valeurs dans colA .

ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());

Une meilleure approche consiste généralement à ajouter une colonne uuid, puis corrigez toutes les références de clé étrangère pour pointer vers elle, et enfin supprimez la colonne d'origine.

Vous devez installer le module UUID :

CREATE EXTENSION "uuid-ossp";

Les guillemets sont importants.