Use
uuid . O PostgreSQL tem o tipo nativo por um motivo. Ele armazena o uuid internamente como um campo binário de 128 bits. Suas outras opções propostas o armazenam como hexadecimal, o que é muito ineficiente em comparação.
Não só isso, mas:
-
uuidfaz uma classificação bytewise simples para ordenação.text,charevarcharconsidere agrupamentos e localidades, o que não faz sentido para um uuid.
-
Existe apenas uma representação canônica de umuuid. O mesmo não é verdade para texto etc; você deve considerar hexadecimal maiúsculo vs minúsculo, presença ou ausência de{...-...}s etc.
Não há dúvida. Use
uuid . O único outro tipo que faz sentido é
bytea , que pelo menos pode ser usado para armazenar os 16 bytes do uuid diretamente. Isso é o que eu faria se estivesse usando sistemas que não pudessem lidar com tipos de dados fora do conjunto básico, como algum tipo de ORM realmente estúpido.