Re: [firebase-br] Dúvida de Exclusão

Carlos Vitorino vitorino em ctvoicer.com.br
Seg Fev 28 18:04:03 -03 2005


Retirado do Release notes do Firebird 1

Um "Gotcha" com SELECT FIRST

Esta declaração

delete from TAB1 where PK1 in (select first 10 PK1 from TAB1);

irá eliminar todas as linhas na tabela. Ouch! O "sub-select" avalia as 
primeiras 10 linhas candidatas para apagar, apaga-as, avalia as próximas 10, 
apaga-as, e assim sucessivamente até que não existam mais linhas disponíveis 
na tabela.

Cuidado!

[]'s

Carlos Vitorino

----- Original Message ----- 
From: "Evandro L. Covre" <elcovre em codaintellisoft.com.br>
To: "'FireBase'" <lista em firebase.com.br>
Sent: Monday, February 28, 2005 2:11 PM
Subject: [firebase-br] Dúvida de Exclusão


Boa Tarde,



Fui fazer uma pequena query para deleção de Registros de uma tabela. Minha
query consistia em excluir os primeiros 20 registros da tabela, para isso
tentei:

DELETE FIRST 20 FROM TABELA1, e isso me retornou um erro token unknown
FIRST, até ai tudo bem, fiz uma adaptação e virou



DELETE FROM TABELA1 WHERE CODIGO IN (SELECT FIRST 20 CODIGO FROM TABELA1)

Que conceitualmente estaria correto. Na minha tabela havia 40 registros e
essa query apagou todos os registros, outro teste com uma outra tabela que
tinha 10000 registros pedindo pra excluir os primeiros 20 também excluiu
todos.



Essa query está correta... ou pode ser um possível bug do Firebird, uso a
versão 1.5.2.4731.



Detalhe essa tabela não tinha chave primaria definida, apenas índices
definidos sobre alguns campos.



Obrigado



Evandro L. Covre

Analista de Sistemas - Coda Intelligent Softwares

Tel: 16 2101 2601
 <http://www.codaintellisoft.com.br/> http://www.codaintellisoft.com.br

Ribeirão Preto - SP



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br 





Mais detalhes sobre a lista de discussão lista