Insert e Aualizar sequencia do restante

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
emer_rosa
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 29
Registrado em: Sáb, 28 Ago 2010 10:45 am
Localização: Torres-RS
Emerson E. Rosa

Ola,

Estou com um problema que não consegui resolver, tenho uma tabela de sequencia de visita TGFVIS, onde tenho os seguintes campos:


Código: Selecionar todos
Codparc | Tipo | Valor | Seqvisita | Codvend | Codreg

Selecionar tudo

8974   | P       |       2|              1|         105|         0
29457  | P       |       2|              2|         105|         0
9024   | P       |       2|              3|         105|         0
1199   | P       |       2|              4|         105|         0
28175  | P       |       2|              5|         105|         0
8745   | P       |       2|              6|         105|         0
Codparc = Codigo do Cliente
Tipo = Semana da Visita
Valor = Dia da Semana
Seqvisita = Sequencia de Visita no dia
Codvend = Código do vendedor
Codreg = Codigo da região, atualmente não uso, é sempre zero.

Estou precisando fazer um Insert de um cliente neste meio via trigger ou procedure, e que ao fazer o insert, ele faça um update na sequencia do restante dos clientes daquele dia.

EX: terei o cliente 1515, Tipo=P, Valor=2 para inserir na Sequencia 2 do vendedor 105, ele teria que inserir e automaticamente ajustar a sequencia dos demais ficaria assim:

Selecionar tudo

Codparc | Tipo | Valor | Seqvisita | Codvend | Codreg

8974    | P       |       2|              1|         105|         0
1515    | P       |       2|              2|         105|         0
29457   | P       |       2|              3|         105|         0
9024    | P       |       2|              4|         105|         0
1199    | P       |       2|              5|         105|         0
28175   | P       |       2|              6|         105|         0
8745    | P       |       2|              7|         105|         0
alguém poderia me ajudar por favor, seria um insert seguido de update, ou um update primeiro apra abrir o espaço para o insert pois tenho uma constraint que não deixa inserir no mesmo dia clientes com a mesma sequencia.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Hmmm,
Não entendo bem como funciona aí, mas acredito que, se o campo CODVEND for apenas um sequencial sem relação com outra tabela, poderia ser tratado utilizando um capmo de DATA(com hora:min:seg) de venda ordenada.
Aparentemente também não existe "sequence" para este campo, correto?
Mas caso seja exatamente como falou. SE você tiver controle sobre todos os inserts deste tipo nessa tabela, é possivel quando for disparada a ação de inserir este novo código, primeiramente adicionar +1 a todos codigos(maiores do que o se deseja) para este cliente/dia(sei la qual é a chave que compoe a informação) com um UPDATE.
Depois inserir a linha com código desejado.
Responder
  • Informação