Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment parcourir toutes les tables d'une base de données pour mettre à jour les colonnes

Une option simple serait de créer une requête qui génère le UPDATE instructions que vous souhaitez exécuter sur toutes les tables :

SELECT CONCAT('UPDATE ', a.table_name, ' SET date = "2016-04-20" WHERE name = "Example";')
FROM information_schema.tables a
WHERE a.table_schema = 'YourDBNameHere'

Vous pouvez copier le résultat de cette requête, le coller dans l'éditeur de requête et l'exécuter.

Mise à jour :

Comme @PaulSpiegel l'a souligné, la solution ci-dessus pourrait être gênante si l'on utilise un éditeur tel que HeidiSQL, car cela nécessiterait de copier manuellement chaque enregistrement dans le jeu de résultats. Utiliser une astuce en utilisant GROUP_CONCAT() donnerait une seule chaîne contenant chaque UPDATE souhaité requête dedans :

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