Fórum [Firebird] - delete first 1? Tem como fazer algo assim? #366040
11/11/2008
0
Adminfo
Curtir tópico
+ 0Posts
11/11/2008
Marcosrocha
Gostei + 0
11/11/2008
Adminfo
Sim
Gostei + 0
11/11/2008
Marcosrocha
Sua única saída é deletar manualmente via IBExpert, IBOConsole ou qualquer outro manipulador de dados do Firebird.
Se entender um pouco de Stored Procedures pode fazer dentro dela com que delete apenas o primeiro. Aqui no fórum tem bastante coisa sobre o assunto.
Gostei + 0
11/11/2008
Diegotiemann
delete from tabela where id_primario in (select first 1 from tabela .....)
Gostei + 0
12/11/2008
Adminfo
Realmente é uma base corrompida. Já tentei excluir ´na unha´ via IBExpert, mas não foi possível, ele não deixa. Não tentei com o IBOConsole.
Todas as colunas são iguais, inclusive a ´id_primario´, portanto não poderei fazer como você sugeriu.
E como é uma quantidade considerável de registros, queria fazer quem sabe uma SP para apenas roda-la no cliente, mas eu precisaria excluir via código apenas um registro de dois duplicados.
Gostei + 0
12/11/2008
Upgradesource
o que vc pode fazer e extrair a metadata da sua tabela, criar uma nova
ex:
cliente - clientetmp
faz um
select distinct(id_primario) from cliente
e joga para a tabela clientetmp
para vc fazer esse select crie uma storedprocedure dando um for, com isso vc vai ter os dados sem duplicidade, depois disso dah um
delete from cliente
e depois faz a procedure jogar os dados da tabela clientetmp para cliente
essa é uma alternativa para resolver seu problema.
[ ]´s
Gostei + 0
12/11/2008
Upgradesource
no lugar de
select distinct(id_primario) from cliente
coloque
select distinct * from cliente
Gostei + 0
12/11/2008
Marcosrocha
Faça a extração dos dados como o [b:24ffba7de6]upgradesource[/b:24ffba7de6] sugere e remova o dado duplicado.
Eu faria isso em um momento que pudesse parar o sistema. Logo, teria liberdade para extrair os dados para um arquivo, removendo do script o dado duplicado (se ele ainda estiver la depois do gfix e gbak), remover todos os dados da tabela corrompida e reinserir executando o script contendo os dados.
Depois do serviço pronto colocaria o sistema no ar de novo e pronto :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)