Select com campo de multi valores no Postgres

Ola pessoal,

Estou com uma situação bem atípica usando JAVA 8 e Postgres. Estou tentando trazer valores com a ordem invertida cujo campo possui varios valores e é do tipo TEXT, ou seja, a cada inserção feito no campo deste registro, ele vai adicionando os valores. Cada vez que o usuario realiza um acesso, o sistema grava no campo DESCRICAO_ACESSO a data que fez o login. Não é criado outro registro, apenas alimentado o campo DESCRICAO_ACESSO, ou seja, eu sempre vou ter somente 1 linha de registro na tabela para cada usuário e quando o sistema quiser adicionar informações para o usuário, ele vai adicionar informações neste campo em especifico, mantendo as informações já existentes sem sobrescrever.

Tabela: US_USUARIOS
Campos: ID, NOME, SENHA, DESCRICAO_ACESSO

O que eu gostaria de saber é como trazer os registros em ordem crescente que ficam registrados no campo de DESCRICAO_ACESSO.

Por exemplo: se eu tiver 3 acessos para o mesmo usuario nos dias 01/02/2020, 02/02/2020 e 03/02/2020, o banco de dados Postgres deixa o último registro acima dos demais. O que eu precisava é fazer um select deste usuário que traga estas datas na ordem crescente, ou seja, os registros mais antigos no topo do resultado mas usando ORDER BY não resolve pois há apenas um único registro para cada usuário nesta tabela.

Por exemplo: SELECT DESCRICAO_ACESSO FROM US_USUARIOS WHERE ID = 1
Resultado:

01/02/2020
02/02/2020
03/02/2020

SELECT DESCRICAO_ACESSO FROM US_USUARIOS WHERE ID = 1 ORDER BY DESCRICAO_ACESSO

Dessa forma, não funciona porque eu só tenho 1 registro para cada usuário nesta tabela e quando o sistema quer adicionar dados, ele pega o registro do usuario na tabela e insere a informação no campo descricao_acesso sem sobrescrever as informações caso já constem nesse campo que é do tipo TEXT.

O teu problema então não será ao mostrar mas ao fazer o update do valor. Terás de concatenar o novo valor sempre no fim.

Se poderes efetuar alterações no modelo de dados (não conheço o contexto, nem sempre isso é possivel), o ideal é ter mesmo uma nova tabela para esses casos com FK para esta tua tabela.

1 curtida