Estou com uma dificuldade em relação a gravar o usuário logado.
Por exemplo o usuário X abriu um atendimento automaticamente estou pegando o usuário da sessão com a função APEX_CUSTOM_AUTH.GET_USERNAME no campo "Valor Default (usado quando SOURCE e o cache da sessão não têm um valor)" utilizando um expressão PL/SQL, porém se outro usuário acessar o mesmo registro e realizar alguma alteração automaticamente é gravado o usuário que está na sessão e não mantém o valor que já existia como se o atendimento tivesse sido aberto pelo usuário que alterou.
Como posso proceder para que isso não ocorra? se alguém puder dar uma ajuda serei grato.
Não sei se entendi muito bem dfigueira, mas se você quer manter registro ou histórico seria um problema de modelagem de dados. Deveria existir um tabela tipo chamado e outra usuario e uma terceira chamado_usuario que armazenaria o usuário que realizou o chamado e o usuário que solucionou o chamado.
Espero ter ajudado, se não posta ai de novo, que tentaremos.
Bom dia Rafael.
Na verdade eu estou utilizando o Login criado no Aplication Express mesmo, portanto não tenho uma tabela de usuários minha estrutura dentro da tabela de atendimentos tem todos atributos referentes aos atendimentos e ainda uma coluna user_name onde por default recupero o usuário logado através da função que passei no primeiro post. Aì o que ocorre é, O usuário Daniel abriu um atendimento , automaticamente o usuário é preenchido no campo user_name recuperando o usuário logado, por algum motivo o usuário Manuel teve que visualizar este atendimento e dar um andamento ou realizar alguma alteração de status ou coisa parecida, este valor que estava setado como Daniel automaticamente é setado pelo usuário que alterou como se fosse este que realizou a abertura.
Nas propriedades do campo já setei para alterar somente quando o valor for nulo porém não obtive sucesso.
não testei, mas experimenta nesta pagina desativa o cache na aba segurança.
Isso promete não salvar o conteudo em cache (acredito que este seja seu problema), com isso o browser será instruído a não salvar o conteúdo da página e a solicitá-lo novamente ao servidor.
Caro Anderson_silva, alterei todas as propriedades da página em relação ao cache mas infelizmente continua ocorrendo a substituição, setei página de cache como não, timeout de cache 10 segundos, cache por usuário não e nunca para condição de cache na página.
Se tiver alguma outra dica por favor posta aí...um abraço e obrigado.
Caro dfigueira,
acho que entendi seu problema.
Tente utilizar o pacote htmldb_application.g_user.
Creio que você possua um item que armazene o login do usuario logado na aplicação.
Se tiver:
1-Vá em Origem
2-Origem usada , utilize Apenas quando o valor atual em estado de sessão for nulo.
3-Tipo de Origem , utilize Expressão ou função em PL/SQL.
4-Manter Estado de Sessão, utilize Por Sessão
5-Expressão ou valor de origem, escreva htmldb_application.g_user
6-Vá em Somente Leitura
7-Tipo de Condição Somente para Leitura, utilize O Valor de Item da Expressão 1 é Não Nulo
Na página deve haver um item que armazena o código da PK
8-Expressão 1, escreva o nome do item que armazena o codigo da PK