2011-04-11 49 views
2

我想對information_schema及其行爲有一些解釋。 假設我想知道myisam表何時被修改。 我寫這篇文章的查詢information_schema表和update_time行爲

select update_time from information_schema.tables 
where table_schema = 'my_db' and table_name = 'my_table' 

即使我申請了一些改變,以我的表什麼,直到我跑flush tables發生在它。 不幸的是,在我看來,update_time存儲我運行flush table的日期和時間,而不是真正發生table change時發生的日期和時間。這是真的嗎? 在此先感謝。

+0

只是好奇,你想要什麼樣的邏輯依賴於最後更新日期? – zerkms 2011-04-11 13:51:47

+0

我只想知道什麼樣的邏輯information_schema如下,如果它是因爲它似乎是這個元數據的效用:)我認爲update_time意味着當一個表已經受到一些變化,而不是當我刷新它。對不起,我的英文:)我希望你明白了。 – 2011-04-11 13:54:55

+1

手冊中有一些內容 - '對於MyISAM,使用數據文件時間戳;但是,在Windows上,時間戳不會被更新更新,因此該值不準確。 - http://dev.mysql.com/doc/refman/5.5/en/show-table-status.html – Devart 2011-04-11 14:48:09

回答

1

我個人更喜歡給每個表添加last_change時間戳,然後將其定義爲「DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」,這意味着每次修改該行時,mysql都會自動更新它。

用這個,你可以直接查詢表格,不僅知道表格被觸動,而且知道哪些行被觸動。

儘管它檢測刪除的行不起作用。

相關問題