2010-03-24 47 views

回答

1

我的理解是,information_schema中的表格確實是視圖。這提到了here

根據MySQL,你不能在臨時表或視圖上進行觸發。有關這方面的討論見this page

所以,我會根據這些信息說不。如果我錯了,我肯定有人會糾正我。

有一個類似於你要求的討論here

你想完成什麼?

+0

我試圖達到的目的我在這裏提到的HTTP任務://論壇.mysql.com/read.php?99,360049,360049#msg-360049 請投擲一些光 – 2010-03-25 07:34:51

+0

在那裏看到您的問題。如果我正確理解了你的場景,你就試圖讓TRIGGER動態適應你重命名TRIGGER定義中特別提到的列的事實。當然,它並不會自動執行,並且更新失敗,因爲TRIGGER正在查找舊的列名稱並將其重命名。 我的建議是保持簡單,如果需要修改表格的列名,請修改觸發器的定義。比我聰明的人可能會有另一種方法。祝你好運! – itsmatt 2010-03-25 11:16:12

0

有人更聰明有 - 只是在開玩笑,但我一直在嘗試做同樣的事情,唯一明顯的答案是添加一個抽象層,不幸的是。

簡而言之,而不只是SQL( 「ALTER TABLE ....」),就需要用另一種語言來調用一個更高層次的功能(自己寫的),像這樣:

- >

modifytable($old_table_structure,$new_table_structure){ 
alter_table_base_table($old_table_structure,$new_table_structure); 
alter_table_history_table($old_table_structure,$new_table_structure); //just guessing that's what I'm doing with it so thought it was the same for you 
alter_history_triggers($old_table_structure,$new_table_structure); 
} 

我真的想在DBMS中直接做到這一點,但它似乎不像information_schema。

當然,你要都在一個事務中,以確保它不會爆炸;)

相關問題