2009-10-29 76 views
0

我想重命名MySql中的表列,並且在任何引用列的觸發器,存儲過程等中更新名稱。這在使用alter table命令時默認情況下不會發生。在mysql中重命名錶列

如果存在可以執行這種重構的工具,那麼如果它能夠生成應用這些更改的SQL腳本就會很好。這將允許我在另一個數據庫上進行相同的更改(無需再次使用該工具)。

謝謝, 唐

+0

它不會自動發生。我認爲這是這個開放驗證的錯誤報告:http://bugs.mysql.com/bug.php?id=33000 – 2009-10-29 19:00:25

回答

0

我從來沒有使用過這一點,但看起來像一個不錯的選擇,Devart MySQL Administration。我不知道你是否可以將它用於現有的項目,但它看起來像是一個探索的選擇。

而且我沒有看到這樣的Stack,可以幫助以及

1

沒有,我知道的一個自動化的方式,但你可以得到一個非常權威的過程和觸發器以及使用該列視圖列表,前提是您不要使用*,並且您不在觸發器/程序/視圖中使用動態SQL生成。

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%'