2014-03-07 89 views
1

我最近安裝了一臺Percona Server 5.6而不是MySQL 5.6的新計算機,並且主要使用InnoDB/XtraDB,FWIW。我正在處理的數據庫僅僅是一個測試場,但我有1個問題:在向表中添加一列(甚至刪除一列)之後,我通常會忘記INSERT或以其他方式更改另一個表的數據,這會跟蹤哪些列名在哪個表中;每個表格都有一個ASCII名稱和一個數字,爲​​簡單起見,這個數字是表格名稱之間的唯一區別。 那麼,有沒有辦法自動更新「關係」表,以便添加或更改列名稱和表的編號,而不是使用cronjob?MySQL/Percona 5.6:在表格被修改後插入表格

現在,我想,我可以丟棄表並使用INFORMATION_SCHEMA,而不是...

編輯0:不要讓上面實現阻止你;這是很好的知道這是否有可能之前採取其他可能的方式。

回答

0

是的,依靠'INFORMATION_SCHEMA.COLUMNS'可能是最好的。

不幸的是,mysql不支持DDL TRIGGER事件,因爲這將是你正在尋找的。

觸發器允許您在插入,更新或刪除特定表中的行之前執行許多SQL和過程操作。然而,據我所知 - 如果我錯了,我會被激怒 - 你不能在DDL語句中設置TRIGGER事件,如ALTER和DROP TABLE ...

但是仍然需要花時間瞭解觸發器 - 它們可以節省通過消除對cronjobs和外部更新(例如聚合值)的需求而花費大量時間。

https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

+0

但是也可以使其反向工作。即在您實現的虛擬信息模式表中可能是多餘的 - 在另一個表上插入該tbl.alter。你不能在信息模式上使用它,因爲它們實際上是視圖。 – cerd