Duvida implementação metodo de criação de numero sequencial
4 respostas
Junior_Campanha
Bom dia
Criei uma aplicação onde ela possui uma especie de ordem de serviço.
Essa ordem de serviço é composta por um numero sequencial (Primary Key do meu BD) / o ano em que foi inserido o cadastro no meu BD ( Tambem é um campo do BD) ex: 1 / 2016
A minha duvida é em criar uma lógica para que quando o ano mudar o meu numero sequencial resete para 1 novamente.
analisando agora acredito que por ser uma primary key o numero sequencial nao daria para resetar pois iria sobrescrever os dados ja informados.
é possivel se eu tirar esse numero sequencia da primary key fazelo auto incremental e assim fazer essa lógica?
Qual a intenção de resetar o número sequencial quando o ano é alterado?
Acredito que modificar valores de chaves primarias não é uma boa ideia, ela serve para identificar o registro na tabela.
Junior_Campanha
A intenção é que todo ano se comece da ordem de serviço 1 para que o numero nao fique muito grande
não precisa ser chave primaria apenas nesse caso é chave primaria pra aproveitar o autoincrement do BD
e quando fiz a aplicação nao havia pensado em resetar o numero da ordem
estou querendo saber mais a titulo de duvida mesmo de como se faz um numero sequencial auto incremental que reseta quando o ano muda.
sou iniciante e estou testando todo tipo de condição para desenvolver aplicações
G
georgealves
Não mexa na chave primaria, crie um campo numero da ordem de serviço por exemplo e itere sobre todos os dados com um “for”, atribuindo no campo ordem de serviço o valor começando em 1 até o ultimo valor. Exemplo:
List<OrdemDeServico>ordens=buscaValoresNoBanco();//Verificaseoanodosistemaé2017.
if(LocalDate.now().getYear().equals(LocalDate.of(2017,01,01).getYear()))){for(inti=0; i < ordens.size(); i++) {orders.get(i).setNumeroOrdemServico(i);}
}
Espero que isso te ajude na sua lógica de negocio.