2012-08-01 85 views
0

如何確定innodb表的最後修改日期?根據this的問題,似乎有多年沒有修復的錯誤。我無法使用校驗和,因爲我正在處理大型表並且計算校驗和花費的時間太長。觸發器也看起來不是正確的解決方案,因爲我只是不想編寫表格的觸發器。有沒有其他辦法可以實現這一目標?innodb表最後修改日期

我需要整個表的最後修改日期(刪除,插入,更新),而不是單行。

編輯: 我認爲沒有可接受的方式來確定這一點,而無需修改現有的查詢或創建觸發器,所以只需檢查表是否被修改就足夠了。正如我所說,這是可能的使用CHECKSUM TABLE...,但它對於大型innodb表非常緩慢。有沒有更好的算法來實現這一點?

+0

要澄清,你想每行或整個表的最後修改日期? – 2012-08-01 13:10:08

+0

好點,我需要修改整個表格的日期,我已經編輯了我的問題。 – 2012-08-01 13:16:03

+0

@Peter Krejci你對所有類型的更新感興趣,包括刪除或只是更新和插入? – Michael 2012-08-01 13:16:07

回答

0

嘗試創建一個包裝程序,它將執行您的語句並更新當前時間。

您的評論這個答案:

「這會防止你的表百寫入觸發:」

一些錯誤的結果,卡住溢出不會讓我發佈一個例子這樣的程序的代碼,

你可以「執行」命令沒有任何問題,我已經測試了它,現在它工作。你必須執行你的程序爲「呼叫my_procedure的(‘插入/更新/刪除...’)」

PREPARE s1 FROM @sql; 
EXECUTE s1; 
DEALLOCATE PREPARE s1; 

這裏是如何創建這樣的過程http://www.java2s.com/Code/SQL/Procedure-Function/EXECUTEdynamicSQLcommand.htm

你只需要改變一個鏈接用參數連接到一個空字符串。