[firebase-br] Update nos 3500 primeiros registros
paulosxs Yahoo!
paulosxs em yahoo.com.br
Seg Ago 20 18:48:13 -03 2007
Devemos considerar que o select será verificado para CADA UM dos
registros da tabela onde V.Coligada = 13. A condição I.Codigo = V.Codigo
garante que qualquer registro constará em cada verificação do select.
Portanto, o exists será verdadeiro para todos. Talvez o problema esteja
na condição I.Codigo = V.Codigo. Você disse que quer "fazer o update
apenas nos 3500 primeiros". Mas, nos 3500 primeiros considerando que
ordem e que condições?
Enquanto isso, experimente:
UPDATE veiculo
SET dtultalteracao = CURRENT_TIMESTAMP - 1
where
codigo in
(SELECT FIRST 3500 i.codigo
FROM veiculo i
WHERE i.coligada = 13
ORDER BY i.codigo) ;
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