É possível limpar todas as tabelas com uma solicitação? Eu tentei o seguinte sem resultado.
DELETE a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
FROM jos_bet_details as a, jos_bet_1x2 as b, jos_bet_1x2_best as c, jos_bet_1x2_prev as d,
jos_bet_1x3 as e, jos_bet_1x3_best as f, jos_bet_1x3_prev g, jos_bet_hcp as h,
jos_bet_hcp_best i, jos_bet_hcp_prev j, jos_bet_ou k,jos_bet_ou_best l,
jos_bet_ou_prev m, jos_bet_debug n, jos_bet_deleted o
Aqui está sua solução
Aqui está o princípio por trás disso: você deseja usar information_schema.tables para criar a consulta DELETE dinamicamente para você.
Primeiro, colete os nomes das tabelas em uma variável chamada 'mass_delete_table_command' como uma lista de exclusão e uma lista de tabelas. Em seguida, execute-o como uma instrução preparada.
Aqui está o código de amostra da criação de 4 tabelas, adicionando registros e zapeando os registros:
Eu corri isso no MySQL 5.5.12 no meu PC. Aqui está a saída:
Isso definitivamente funcionará para você, desde que
De uma chance !!!
Sua
delete
sintaxe parece boa para mim:Observe que as restrições de chave estrangeira podem fazer com que isso falhe . Se você tiver chaves estrangeiras circulares (ou seja, da tabela A para a tabela B e da tabela B para a tabela A), talvez seja necessário fazer exclusões em cascata ou descartar (ou desabilitar ) as restrições antes de excluir.
Você teria que construir uma instrução sql dinâmica que excluiria dados de todas as tabelas, uma por uma. Você encontrará um exemplo adequado de truncamento de dados em todas as tabelas em um banco de dados nesta questão . O problema é truncar todas as tabelas em um banco de dados MS SQL 2000 usando Transact-Sql. Também falamos sobre truncar tabelas (operação não logada, tem algumas limitações), não apenas deletar, então se você precisar deletar, terá que mudar a operação de truncar para deletar.
O problema aqui está relacionado com a ordem de precedência das declarações ao olhar para o relacionamento pai/filho entre as tabelas, pois você não pode esvaziar uma tabela pai antes de seus filhos, então você terá que verificar a ordem da exclusão declarações.
eu faria algo como:
Este é um exemplo T-SQL de sql dinâmico usando system view information_schema.tables que também existe em My-SQL. Você terá que traduzir a declaração da variável e outros pequenos problemas de linguagem.
EDIT 1 - razão para exclusão: eu não estava ciente da instrução DELETE de várias tabelas do MySQL . Foi mal!
Editar 2 - motivo da exclusão: vi que a resposta aceita estava usando essa técnica, então parece que essa resposta é válida. O que aconteceu com a instrução de exclusão de várias tabelas?
Eu reutilizei a resposta RonaldoMYSQL db para descartar uma tabela completamente, postando-a aqui para que qualquer pessoa possa usá-la para sua conveniência,
Uma vírgula é buscada em minha consulta, então modifiquei essa instrução com uma substituição total e a executei manualmente.