Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como percorrer todas as tabelas em um banco de dados para atualizar colunas


Uma opção simples seria criar uma consulta que gerasse o UPDATE instruções que você deseja executar em todas as tabelas:
SELECT CONCAT('UPDATE ', a.table_name, ' SET date = "2016-04-20" WHERE name = "Example";')
FROM information_schema.tables a
WHERE a.table_schema = 'YourDBNameHere'

Você pode copiar a saída dessa consulta, colá-la no editor de consultas e executá-la.

Atualização:

Como @PaulSpiegel apontou, a solução acima pode ser inconveniente se alguém estiver usando um editor como o HeidiSQL, porque exigiria a cópia manual de cada registro no conjunto de resultados. Empregando um truque usando GROUP_CONCAT() daria uma única string contendo cada UPDATE desejado consulta nele:
SELECT GROUP_CONCAT(t.query SEPARATOR '; ')
FROM
(
    SELECT CONCAT('UPDATE ', a.table_name,
                  ' SET date = "2016-04-20" WHERE name = "Example";') AS query,
        '1' AS id
    FROM information_schema.tables a
    WHERE a.table_schema = 'YourDBNameHere'
) t
GROUP BY t.id