- Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 15 anos, 5 meses atrás por
fsitja.
-
AutorPosts
-
24 de setembro de 2010 às 8:41 pm #96257
Evloki
ParticipanteBoa tarde,
Para variar mais um problemas por aqui 8)Preciso fazer o seguinte esquema….
Tenho uma identity em uma tabela que está no 50 e preciso fazer que o próximo registro inserido seja o 150 e não o 51 ou seja aumentar o identity em 99 sem inserir nenhum novo registro.
Alguem tem idéia de como fazer isso?
Obrigado.24 de setembro de 2010 às 8:56 pm #96258Leonardo Litz
ParticipanteComo você gera os valores para a chave primaria?
24 de setembro de 2010 às 9:50 pm #96260vieri
ParticipanteDrop e recria com inicio em 150…
24 de setembro de 2010 às 9:54 pm #96261Evloki
ParticipanteAtravés de uma trigger.
Não posso dropar… =/
24 de setembro de 2010 às 10:15 pm #96263burga
Participantedeclare
novo_valor NUMBER(10);
valor_atual NUMBER(10);
begin
novo_valor = 150;
select sequencia.nextval into valor_atual from dual;
loop
exit when valor_atual = novo_valor - 1;
select sequencia.nextval into valor_atual from dual;
end loop;
end;
/ou, se puder alterar a sequence…
ALTER SEQUENCE sequencia INCREMENT BY 99;
select sequencia.nextval into valor_atual from dual;
ALTER SEQUENCE sequencia INCREMENT BY 1;24 de setembro de 2010 às 10:18 pm #96265vieri
Participanteidentity apesa de fugir do escopo do site é um objeto
similar a sequence mas é do sqlserver..até aonde eu sei no mssql vc não tem alter de identity….
24 de setembro de 2010 às 10:26 pm #96266burga
ParticipanteEu assumi que você quis dizer sequence ao invés de identity, o código que eu postei é pro Oracle…
25 de setembro de 2010 às 12:22 am #96267vieri
ParticipanteSua resposta está correta…
o objetivo do meu post foi demosntrar que a sequence é mais flexivel que o identity! 😆 Eu não quis dizer nada, o nosso amigo com dúvidas é que postou dúvida de SQL SERVER, como aqui a maioria quase absoluta são especialista Oracle, eu alertei o fato e alertei que não da para fazer esse tip de alteração que fazemos nas sequences num identity que é mais engessado.
abços
25 de setembro de 2010 às 2:02 am #96269fsitja
ParticipanteA propósito, dropar a sequence incorre em certos problemas pois é necessário atribuir novamente todos os grants anteriormente existentes nela. O melhor é rodar um PL/SQL script com os nextval em loop mesmo, conforme o Burga postou acima.
25 de setembro de 2010 às 2:41 am #96271burga
ParticipanteAh sim Vieri, minha resposta foi pro Evloki… Eu lendo ela agora pareceu ser uma resposta meio ríspida, mas não foi essa a intenção!!! 😳
E eu entendi a sua colocação sobre o mssql, só quis esclarecer que o código que postei foi pro Oracle e não pro SQL Server. Aliás, meu conhecimento de SQL Server ainda é bem limitado… 😆
E aí Francisco, andou sumido heim!!! Que bom que voltou…
26 de setembro de 2010 às 10:28 pm #96276Evloki
ParticipanteValeu pessoal!
Segunda vou testar e posto aqui!
Obrigado 😀27 de setembro de 2010 às 9:26 pm #96286fsitja
Participante[quote=”burga”:1rza2y3m]Ah sim Vieri, minha resposta foi pro Evloki… Eu lendo ela agora pareceu ser uma resposta meio ríspida, mas não foi essa a intenção!!! 😳
E eu entendi a sua colocação sobre o mssql, só quis esclarecer que o código que postei foi pro Oracle e não pro SQL Server. Aliás, meu conhecimento de SQL Server ainda é bem limitado… 😆
E aí Francisco, andou sumido heim!!! Que bom que voltou…[/quote]
Pois é! Estava sumido mesmo, mas agora estou voltando devagar. Ainda sem meu Oracle instalado em casa, mas vou conferindo a contribuição do pessoal quando dá um tempinho.
-
AutorPosts
- Você deve fazer login para responder a este tópico.