Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deise Vicky

Primary Key

Recommended Posts

Estou desenvolvendo uma aplicação em java utilizando banco de dados MySql uma dúvida:

 

Tenho a seguinte situação: meu cliente precisa de um sistema que gere conhecimentos, sendo que cada um desse conhecimento tem um código de identificação único, como se fosse uma NF. Só que o problema é que ele já possui esses conhecimentos no papel com a numeração definida e o sistema teria que gerar a mesma numeração que os conhecimentos de papel.

Então, se por exemplo o último conhecimento dele tiver a numeração 15000, meu sistema tem que gerar os conhecimentos automaticamente com a numeração a partir de 15000.

 

Então, gostaria de saber se existe a possibilidade de definir isso na hora de criar a tabela, algo desse tipo:

CREATE TABLE Conhecimento(
    id INT NOT NULL AUTO_INCREMENT > 15000,
    PRIMARY KEY (id)
) ENGINE=MyISAM;

 

Caso não haja essa possibilidade, qual a melhor forma de eu resolver esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um modo bem gambiarral de fazer isso é o seguinte;

você tira a atributo "AUTO_INCREMENT" da PK da tabela e insere um

conhecimento virtual com id = 1500, depois volta o atributo "AUTO_INCREMENT".

Assim todos os novos conhecimentos vão ser incrementados a partir de 1500, daí é só

você excluir o 1500.

 

**Obs.: Não sei se isso realmente vai funcionar, foi apenas uma idéia idiota que me ocorreu e estou postando.

 

 

PS.: É só comigo ou outros usuário estão tendo problemas com o editor de posts?

 

 

 

usoPreviewPopupusoPreviewPopup

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um modo bem gambiarral de fazer isso é o seguinte;

você tira a atributo "AUTO_INCREMENT" da FK da tabela e insere um

conhecimento virtual com id = 1500, depois volta o atributo "AUTO_INCREMENT".

Assim todos os novos conhecimentos vão ser incrementados a partir de 1500, daí é só

você excluir o 1500.

 

**Obs.: Não sei se isso realmente vai funcionar, foi apenas uma idéia idiota que me ocorreu e estou postando.

 

 

PS.: É só comigo ou outros usuário estão tendo problemas com o editor de posts?

 

 

 

usoPreviewPopup

É...uma ideia...

Também não sei se rola, tenho que tentar alterar a tabela depois de criada e ela possui muitos relacionamentos...

Não custa tentar né....gambis...

 

Ah...acho que deve ser você que não está conseguindo editar os posts, porque eu consigo...!

 

Ah...se alguém souber uma forma de resolver o meu problema sem gambis também...estou aberta a novas ideias!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como os meus inserts no banco serão feitos em grande quantidade achei uma solução viável, que não precisa fazer gambiarra.

 

Ao invés de minha tabela ter uma PK Auto Incremente, ela terá a PK definida apenas como UNIQUE, para não aceitar valores iguais.

Dessa forma, quando eu for fazer os inserts, primeiro eu faço um select para verificar o código do último registro, e crio uma lista (via código) de conhecimentos com a numeração a partir do último.

 

Achei melhor dessa forma porque:

O usuário vai informar a quantidade de conhecimentos/dia para determinados caminhões, então, eu devo calcular quantos conhecimentos devo gerar.

Por exemplo, se ele informar 5 conhecimentos para 5 caminhões para 15 dias, devo calcular quanto isso dá (neste caso 375), e a partir desses dados será populada uma tabela contendo a numeração dos conhecimentos por veículo.

Após o usuário visualizar isso ele tem que confirmar se realmente era isso que ele queria fazer, então só após a confirmação é que eu vou definitivamente armazenar no banco.

 

Como já vai ser necessário preencher uma lista para mostrar os dados na tabela, não custa nada usar ela para depois gravar no banco...

 

Pode ser que essa não seja a melhor forma de fazer isso, mas já resolve meu problema...

 

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.