none
Erro no valor da chave primaria no ROLLBACK RRS feed

  • Pergunta

  • Galera,

       Estou inserindo dados em uma tabela. Segue informações abaixo

    VEJA a DDL

    create table TESTE(

    idteste   int identity(1,1),

    descricao nchar(2),

    constraint pk_teste primary key(idteste)

    )

    quando uso o insert com begin transaction funciona perfeitamente.

    ----

    begin transaction

    insert into TESTE values('AB')

    commit transaction

    -----

    Até aí normal, mas quando fiz um teste usando o rollback, o valor da chave primária não vai junto com o Rollback, ou seja, se eu acrescentar outros dados na tabela, o valor da chave primária será o dobro do que já está.

    Por que será que o valor da chave primária não fuciona direitinho no rollback

    gracias.

    quarta-feira, 1 de agosto de 2012 20:51

Respostas

  • Boa Noite,

    Por uma questão de performance, colunas Identity "queimam" o valor quando você faz o ROLLBACK. Não há como continuar do ponto em que você parou. Se você inserir o valor, o Identity será gasto mesmo que você efetue o ROLLBACK. Se sua solução não tolera "GAPs", você precisará construir uma tabela de sequenciais e controlá-los.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos:http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível

    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 1 de agosto de 2012 22:11
    • Marcado como Resposta Harley Araujo sexta-feira, 3 de agosto de 2012 14:16
    • Não Marcado como Resposta jmarqDeveloper quinta-feira, 16 de agosto de 2012 19:20
    • Marcado como Resposta Ricardo Russo sexta-feira, 25 de janeiro de 2013 12:07
    quarta-feira, 1 de agosto de 2012 22:06