2009-10-29 4 views
0

Je voudrais renommer une colonne de table dans MySQL et aussi avoir le nom mis à jour dans tous les triggers, procs stockés, etc. qui référencent la colonne. Cela ne semble pas se produire par défaut lors de l'utilisation de la commande alter table.renommer les tables colonnes dans mysql

S'il existe un outil capable d'effectuer un tel refactoring, il serait bon qu'il génère un script SQL qui applique ces modifications. Cela me permettrait alors de faire les mêmes changements sur un autre DB (sans utiliser l'outil à nouveau).

Merci, Don

+0

Cela n'arrivera pas automatiquement. Je pense que c'est ce rapport de bug ouvert-vérifié pour cela: http://bugs.mysql.com/bug.php?id=33000 –

Répondre

0

Je n'ai jamais utilisé cela, mais ressemble à une bonne option, Devart MySQL Administration. Je ne sais pas si vous pourriez l'utiliser pour un projet existant, mais cela ressemble à une option à explorer.

Aussi j'ai vu cela sur Stack, pourrait aider aussi bien

1

il n'y a pas un moyen automatisé que je connaisse, mais vous pouvez obtenir une liste assez autoritaire des procédures et des triggers et les vues qui utilisent cette colonne , à condition que vous n'utilisiez pas * et que vous n'utilisiez pas la génération SQL dynamique dans vos déclencheurs/procédures/vues.

SELECT 'sp' AS type 
    , routine_schema 
    , routine_name 
    FROM information_schema.routines 
WHERE routine_body LIKE '%$table%' 
    AND routine_body LIKE '%$column%' 
UNION ALL 
SELECT 'trigger' AS type 
    , trigger_schema 
    , trigger_name 
    FROM information_schema.triggers 
WHERE action_statement LIKE '%$table%' 
    AND action_statement LIKE '%$column%' 
UNION ALL 
SELECT 'view' AS type 
    , table_schema 
    , table_name 
    FROM information_schema.views 
WHERE view_definition LIKE '%$table%' 
    AND view_definition LIKE '%$column%' 
Questions connexes