Eu tenho um banco de dados Postgresql 8.1. Em uma tabela, há três colunas: first_name
, last_name
, display_name
.
É possível definir o valor padrão de display_name
ser first_name + " " + last_name
?
Eu tenho um banco de dados Postgresql 8.1. Em uma tabela, há três colunas: first_name
, last_name
, display_name
.
É possível definir o valor padrão de display_name
ser first_name + " " + last_name
?
Use um gatilho.
Aqui está um código que você pode usar como base. Se você também precisar lidar com UPDATEs, apenas uma pequena alteração será necessária.
Você não precisa realmente armazenar o valor; você pode criar uma função que pode ser referenciada como uma coluna gerada. A única ressalva é que as referências devem sempre ser qualificadas com o nome da tabela ou do alias.
Os resultados:
Você pode até indexar o valor gerado, inclusive usando pesquisas KNN com base na semelhança de trigramas. Por exemplo:
Esse tipo de pesquisa retorna linhas da varredura de índice em ordem de "distância" da string de pesquisa. Se você quiser ver o quão "perto" eles estavam, você pode usar o operador de distância (
<->
) ou asimilarity()
função (que é 1 - distância). Uma pesquisa KNN pode retornar os K "vizinhos mais próximos" muito rapidamente, mesmo com um conjunto de dados muito grande.Com a configuração DEFAULT em uma tabela de colunas, não.
Sua melhor aposta aqui é um TRIGGER com o valor NOVO para cada coluna que você deseja computar.
Use Colunas Geradas (desde Postgres 12).
DB Fiddle