我想在MySql中重命名一个表列,并且在引用该列的任何触发器,存储过程等中更新名称。使用alter table
命令时,默认情况下似乎不会发生这种情况。
如果存在可以执行此类重构的工具,那么如果它可以生成应用这些更改的SQL脚本将会很棒。这将允许我在另一个DB上进行相同的更改(不再使用该工具)。
谢谢, 唐
答案 0 :(得分:1)
我所知道的并不是一种自动化的方法,但如果您不使用*
并且不使用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%'
,则可以获得使用该列的过程,触发器和视图的非常权威的列表在您的触发器/过程/视图中使用动态SQL生成。
{{1}}
答案 1 :(得分:0)
我从未使用过这个,但看起来是个不错的选择,Devart MySQL Administration。我不知道你是否可以将它用于现有项目,但它看起来像是一个探索的选项。
我也确实在Stack上看到了这一点,也可以提供帮助