Rechercher l’ensemble des tables contenant une colonne particulière

Saviez-vous qu'il était possible d'utiliser du SQL pour avoir des infos sur la structure de votre base de donnée ?

Rechercher l’ensemble des tables contenant une colonne particulière

Il y a quelques temps, j’ai eu le besoin de renommer une colonne de notre base de donnée qui était présente dans de nombreuses tables de notre modèle. Il s’agissait de la colonne user_ipad_id qui servait de clé étrangère entre notre table d’utilisateurs et toutes les données associées.

Afin de ne pas oublier une table dans l’opération, j’ai eu besoin de chercher une solution me permettant de lister toutes les tables de notre schéma PostgreSQL qui contenait une colonne user_ipad_id.

SELECT t.table_schema,
       t.table_name
FROM   information_schema.tables t
       INNER JOIN information_schema.columns c
               ON c.table_name = t.table_name
                  AND c.table_schema = t.table_schema
WHERE  c.column_name = 'user_ipad_id'
       AND t.table_schema NOT IN ( 'information_schema', 'pg_catalog' )
       AND t.table_type = 'BASE TABLE'
ORDER  BY t.table_schema;

Une fois exécutée, la requête m’a affichée l’ensemble des tables que je recherchais et j’ai pu ensuite reprendre cette liste et m’en servir dans une migration Rails pour renommer les colonnes nécessaires.

Find tables with specific column name in PostgreSQL database - PostgreSQL Data Dictionary Queries
Useful SQL queries for PostgreSQL to explore database schema.

Subscribe to #Blog

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe