Update para arrumar sequencia de um campo q não é incremental

02/08/2018

0

Existe uma tabela com uma coluna chamada FOLHAS e essa coluna não auto incremento, preciso fazer um update para popular essa coluna de forma sequencial.
estou tentando o seguinte update....

update protestos
set folhas = 140+1
where instrument between 44640 and 44999

porem ele preenche 141 para todos os registro do between
Edney Araujo

Edney Araujo

Responder

Posts

02/08/2018

Luiz Santos

Cara, qual o banco que você está usando?

Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.

A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.

Mas para te orientar melhor, preciso saber o que vc está usando exatamente.

Grande abs

Responder

02/08/2018

Edney Araujo

Estou usando Firebird
Responder

02/08/2018

Edney Araujo

Cara, qual o banco que você está usando?

Pense assim quando vc coloca o WHERE como vc colocou, vc está pegando um bloco de dados.
Por isso ele joga o mesmo valor para o bloco todo.

A forma mais correta seria usar um CURSOR ou uma TABELA TEMPORÁRIA para resolver isso.
Se estiver usando uma linguagem como DELPHI, usar um RECORDSET.

Mas para te orientar melhor, preciso saber o que vc está usando exatamente.

Grande abs


Estou usando Firebird
Responder

03/08/2018

Emerson Nascimento

tente algo assim:

update protestos p1 set folhas = 140 + (select count(*) from protestos p2 where p2.instrument between 44640 and 44999 and p2.instrument < p1.instrument)
where p1.instrument between 44640 and 44999
Responder

03/08/2018

Emerson Nascimento

pra ficar como você solicitou:
update protestos p1 set folhas = 140 + (select count(*) from protestos p2 where p2.instrument between 44640 and 44999 and p2.instrument <= p1.instrument)
where p1.instrument between 44640 and 44999
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar