Auto-increments e sequences têm o seguinte problema (ou solução): eles são IDs mas não têm significado nem têm o compromisso de serem contíguos ou reutilizados.
O único compromisso é que eles são seqüenciais e únicos, para poderem ser usados como “surrogate keys”.
Assim você pode até ver o caso em que você pode encontrar “buracos” - você iniciou a sua base, e a “sequence” estava em 10. Quando você reiniciou o banco, em vez de ela começar de 11, ela pode muito bem começar por 20. Isso não é um bug, e sim uma otimização do seu banco.
Se você precisa de algo com significado, use um gerador de seqüências.
Tenho o seguinte problema:
Tenho uma tabela PROJETOS e outra COTACOES com relacionamento 1…n respectivamente.
A tabela cotações tem um campo que representa o ID do PROJETO e um campo CODIGO que representa o ID da cotacao para o referido projeto.
Existe alguma maneira de eu colocar um esquema de AUTO INCREMENT nesse campo, mas com a seguinte regra:
Todas as vezes que um novo ID de PROJETO for inserido na tabela COTACOES o primeiro CODIGO ser 1 e os próximos registros para esse ID de PROJETO ser números sucessivos?
Se existir algum modelo de se fazer isso programaticamente, tambem serve.
[quote=thingol]Auto-increments e sequences têm o seguinte problema (ou solução): eles são IDs mas não têm significado nem têm o compromisso de serem contíguos ou reutilizados.
O único compromisso é que eles são seqüenciais e únicos, para poderem ser usados como “surrogate keys”.
Assim você pode até ver o caso em que você pode encontrar “buracos” - você iniciou a sua base, e a “sequence” estava em 10. Quando você reiniciou o banco, em vez de ela começar de 11, ela pode muito bem começar por 20. Isso não é um bug, e sim uma otimização do seu banco.
Se você precisa de algo com significado, use um gerador de seqüências. [/quote]
Entendi…
esse campo CODIGO é mais para controle de cotacoes mesmo…
Existe algum algoritimo gerador de sequencias compilado já?
Ouvi dizer que o hibernate tem alguma coisa parecida acoplado…