[firebase-br] Update nos 3500 primeiros registros
Edson de Paulo
epaulo2002 em yahoo.com.br
Ter Ago 21 08:37:51 -03 2007
Olá Paulo
Assim como você o Fabio me deu a mesma sugestão. A cláusula order by na
minha sub-query você pode ignorar, mas já rodei o update do jeito que
você sugeriu e o resultado é o mesmo, ele faz updade em todos os 7500
registros, estou gerando um arquivo texto, e queria apenas separar em
dois arquivos com 3.500 registros no máximo, independente da ordem,
apenas que seja coligada = 13.
Me parece que o FIRST dentro de um sub-query não surge efeito e se eu
executar a sub-query apenas ela me retorna os 3500.
Já procurei na documentação, nos livros mas não encontro um exemplo
deste update. Estou usando a versão 2.0 do FireBird.
Obrigado assim mesmo.
--
Edson de Paulo
Curitiba - PR
Edson de Paulo escreveu:
> Alguém sabe me explicar o motivo dos updates abaixo não terem funcionado?
> Tenho 7500 registros de acordo com o meu Where
>
> Quero fazer um update apenas nos 3500 primeiros registros que ele achar.
> E nas duas formas abaixo ele setou os 7500.
>
>
> UPDATE veiculo v
> SET v.dtultalteracao = CURRENT_TIMESTAMP - 1
> WHERE v.coligada = 13
> AND EXISTS (SELECT FIRST 3500 i.codigo
> FROM veiculo i
> WHERE i.coligada = 13
> AND i.codigo = v.codigo
> ORDER BY v.codigo DESC);
>
> ou
>
> UPDATE veiculo v
> SET v.dtultalteracao = CURRENT_TIMESTAMP - 1
> WHERE v.coligada = 13
> AND v.codigo IN (SELECT FIRST 3500 i.codigo
> FROM veiculo i
> WHERE i.coligada = 13
> ORDER BY v.codigo DESC);
>
>
Mais detalhes sobre a lista de discussão lista