PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgresql altera o tipo de coluna de int para UUID


Você não pode simplesmente converter um int4 em uuid; seria um uuid inválido, com apenas 32 bits definidos, sendo os 96 bits mais altos zero.

Se você deseja gerar novos UUIDs para substituir os inteiros inteiramente e se não houver referências de chave estrangeira existentes para esses inteiros, você pode usar uma conversão falsa que realmente gera novos valores.

Não execute isso sem um backup de seus dados. Ele joga fora permanentemente os valores antigos em colA .
ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());

Uma abordagem melhor é geralmente adicionar uma coluna uuid e, em seguida, corrija quaisquer referências de chave estrangeira para apontar para ela e, finalmente, elimine a coluna original.

Você precisa do módulo UUID instalado:
CREATE EXTENSION "uuid-ossp";

As citações são importantes.