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?

sou iniciante e estou travando nessa logica

obrigado

4 Respostas

G

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

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();

// Verifica se o ano do sistema é 2017.
if(LocalDate.now().getYear().equals(LocalDate.of(2017, 01, 01).getYear()))) { 
    for (int i = 0; i < ordens.size(); i++)  {
       orders.get(i).setNumeroOrdemServico(i);
    }
}

Espero que isso te ajude na sua lógica de negocio.

Junior_Campanha

vou tentar isso se der certo eu falo

Criado 17 de novembro de 2016
Ultima resposta 17 de nov. de 2016
Respostas 4
Participantes 2