Controle de Numeração Sequencial

Oracle Application Express - web application development tool (antigamente conhecido como Oracle HTML-DB)
Responder
danielpbarros
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Dom, 15 Jan 2012 9:34 pm
Contato:
Daniel Barros

Boa tarde Pessoal,

Estou com um dúvida para desenvolver uma tela aqui com o APEX. A situação é a seguinte:

Estou fazendo um simples controle de Atendimento. Cada vez que uma atendente entra na tela de cadastro, já consta o numero da Ordem de Serviço. Eu pego o ultimo numero e somo + 1. Até ai ok.
O problema é quando duas atendentes entram juntos na mesma tela, o sistema pega o mesmo numero e quando a segunda atendente vai salvar é gerado um erro devido a restrição da PK ( a PK da tabela é o numero da OS ).

Eu queria saber uma maneira de fazer uma checagem no final e mostrar em um pop-up o novo numero gerado.

alguém tem uma sugestão que possa me ajudar?

abs.
Daniel.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Daniel,

Acho que neste caso é melhor você trabalhar com SEQUENCES de banco de dados.

Uma sequence é um contador que foi desenvolvido exatamente para este tipo de problema.

Com sequences, você jamais terá dois usuários obtendo o mesmo número.

Tente pesquisar um pouco sobre APEX e SEQUENCES. No link abaixo você pode obter algumas informações:

http://www.grassroots-oracle.com/2011/1 ... usage.html

Abraços,

Sergio Coutinho
danielpbarros
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 67
Registrado em: Dom, 15 Jan 2012 9:34 pm
Contato:
Daniel Barros

Bom dia Sérgio.

Ontem, para efeito de teste, criei uma trigger que analisa o valor da PK antes de realizar o insert. Sei que não é uma solução elegante, com isso vou estudar o link passado e volto informando se ficou ok.

Muito obrigado cara !!!

Daniel.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante