Porém estou com uma dúvida no sistema que eu estou desenvolvendo. Não chega ser uma dúvida específica da linguagem JAVA, porém a linguagem pode ter alguma coisa que facilite na solução do meu problema.
Bom, o meu problema é o seguinte.
Estou precisando gerar um código (PK de um banco de dados). Esse código é específico e não somente auto-incrementação.
O código que eu tenho que montar funciona da seguinte maneira:
Eu tenho uma categoria de dados e uma tabela. Essa categoria possui código auto-incremental normal. Sem problemas até aqui.
Em outra tabela, ficam as subcategorias da tabela que eu descrevi acima. Porém nessas subcategorias, o código deve ser de um tipo específico da seguinte forma:
[quote=armando]Você pode primeiro dar um select na subcategoria, incrementar e colocar o insert, ou pode fazer o seguinte… na query de insert, colocar algo assim:
insert into SubCategoria (idCategoria, seqSubCategoria, desc)
select ?, max(seqSubCategoria) + 1, ?
from SubCategoria where idCategoria = ?
acertando para os nomes dos seus campos e tabelas…
Falou,
Armando[/quote]
Então, acho que você não entendeu. Vou exemplificar para ver se facilita o entendimento.
Supondo que minha tabela categoria é assim:
Codigo Nome
1 Esportes
2 Cinema
3 Televisão
4 Internet
E minha tabela sub-categoria é assim:
Codigo Categoria Nome
11 1 Futebol
12 1 Natação
21 2 Suspense
31 3 Séries
32 3 Novelas
33 3 Programas
41 4 Grupos
42 4 Fóruns
43 4 Sites
Reparem que o código da subcategoria da subcategoria é formado pelo digito do Codigo da categoria (primeira tabela) + um número incremental da subcategoria.
Tomando como exemplo a categoria “Esportes”.
Esportes possui código 1.
Portanto o código das subcategorias de Esportes deverão sempre começar com 1 e em seguida vem o número da subcategoria.
Portanto se eu fosse adicionar mais um subcategoria para a categoria Esportes, o novo código seria 13. O 1 representaria a categoria e 3 a subcategoria.
Acho que agora ficou mais claro o problema que eu estou tendo.
Eu estou precisando de um algoritmo para gerar esse código da subcategoria.
Se vc quer isso então acho que não tem jeito… vc tem que dar um select, ver o maior, concatenar na programação mesmo e mandar inserir… você precisa mesmo disso? Não pode fazer do jeito incremental normal e concatenar só pra exibir? Esse esquema aí tá com cara de coisa que depois vai dar trabalho à toa… tipo… se passar de dez…
Preciso porque eu estou trabalhando em cima das tabelas já prontas. Não foi eu quem desenvolveu as tabelas. Se eu fosse desenvolver as tabelas, com certeza usaria o modo incremental.