Jump to content


Photo

Problemas Com Auto-Increment


  • Faça o login para participar
1 reply to this topic

#1 carrapeta

carrapeta

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro

Posted 17/01/2010, 21:28

Olá a todos!

tenho o seguinte problema... vejam se podem me ajudar...

Quando eu deleto a ÚLTIMA (repito: a ÚLTIMA) entrada de uma tabela com PRIMARY INDEX em uma das colunas, ela diminui o valor do Cardinality (auto-increment)...

Exemplo:
Tabela Serviço:

idservico.......descricao
... 1 .......... teste1 .
... 2 .......... teste2 .
... 3 .......... teste3 .


Nesse caso, o cardinality está em 3, ou seja, a proxima entrada que eu fizer nessa tabela, receberá o idservico 4! Ótimo! é o que eu quero...
Mas se eu remover as linhas de idservico 1 e 2, nao tenho problemas ... o cardinality do continua em 3...
Mas se eu apagar o ultimo, no caso, a linha que tem idservico 3, o cardinality cai para o maior idservico disponivel... caso so tenha a linha 3, ele zera!
Gostaria de rodar o delete em qualquer linha sem afetar o cardinality, pois mesmo removendo itens dessa tabela, para efeito de log, nenhuma entrada pode ter o valor idservico igual a uma anterior já removida.

Deu pra entender? rs...
É possível?

Abcs!

Edição feita por: carrapeta, 17/01/2010, 21:35.


#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 22/01/2010, 13:58

Manipular a cardinalidade dessa maneira acrfedito que seja muito complicado,
acredito que seja mais sensato criar um valor(coluna) para que sejam
alocados sempre valores incrementais (1 + 1, 2 + 1, 3 + 1 e por ai vai).
Assim você pode manipular a mesma para que sempre seja um valor a mais do ultimo inserido.

Colega para este tipo de exclusão aconselho o uso se exclusão "lógica", onde o registro não é
deletado mas sim "desativado" mantendo assim seus valores pertinentes ao que você necessita
(valor incremental sempre único e inalterado), um exemplo é criar um valor para a entidade
booleano onde para quando o registro estiver como true o mesmo estára ativado e visível,
e quando for false estará desativado e fora de visão do sistema.

Espero ter contribuído! ;-)

Edição feita por: Renan L. Queiroz, 22/01/2010, 13:59.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq