EXEMPLO: Tenho mais de 30 tabelas começando com o prefixo "dp_" e cerca de 12 começando com "ex_".
PERGUNTA: Como posso descartar todas as tabelas começando com "dp_" em uma consulta?
EXEMPLO: Tenho mais de 30 tabelas começando com o prefixo "dp_" e cerca de 12 começando com "ex_".
PERGUNTA: Como posso descartar todas as tabelas começando com "dp_" em uma consulta?
Aqui está um procedimento armazenado que aceita o banco de dados e a string de prefixo como parâmetros:
ATUALIZAÇÃO 2011-07-12 14:55 EDT
Eu apenas pensei em uma maneira mais limpa e simplista. Em vez de usar um procedimento armazenado, basta usar a função GROUP_CONCAT para reunir todas as tabelas para zap. Em seguida, componha em uma única consulta:
Aqui está uma consulta para descartar todas as tabelas que começam com wp_pol no banco de dados atual:
A próxima coisa a fazer é armazenar o resultado disso em
A última coisa é executar o SQL dinâmico usando estes três (3) comandos:
Aqui está uma demonstração usando o MySQL 5.5.12 no Windows que funciona:
De uma chance !!!
Em primeiro lugar, gere um script para fazer isso no prompt do Unix:
Substitua o prefixo pelo seu. A
--batch
opção suprime a formatação sofisticada que o MySQL faz por padrão para que você possa produzir um script SQL executável.Revise o script e, se estiver correto, execute
drop.sql
-o nomysql>
prompt.Você deve consultar as tabelas do sistema para esses nomes de tabela e construir uma string para executá-la dinamicamente. No SQL Server eu faria algo como:
Agora você tem que encontrar a tabela de sistema correspondente no MySQL.
Para responder à sua pergunta, não. Não no MySQL usando um único comando/consulta. Você terá que encadear comandos.
No entanto, se você deseja atingir seu objetivo, aqui está uma maneira:
De um script bash algo como:
Em seguida, revise o arquivo drops.sql. Se estiver tudo certo, faça um BACKUP , então...
Você sempre pode usar um ADMINISTRADOR DE BANCO DE DADOS como o navicat e esse tipo de problema desaparecerá com um simples selecionar e excluir.