2009-10-22 59 views
3

爲新項目設計數據庫表時,是否最好爲每個表添加一個last_modified列,該列會自動更新?矯枉過正將last_modified列添加到所有表?

性能問題是否會自動更新last_modified列太多而不值得?

本專欄可能有許多用途,其中之一是幫助緩存。但是把這樣的專欄投入每張桌子是否過於矯枉過正?

另外 - 是否有其他有用的理由有一個last_modified列?

這是特定於MySQL,因爲它是我使用的唯一系統。

+0

您當然需要一個觸發器來維護這樣一個列。 – HLGEM 2009-10-22 18:31:10

+0

我不確定是否需要觸發器,在MySQL中,可以通過在相關列類型(我使用類型TIMESTAMP)上設置屬性ON UPDATE CURRENT_TIMESTAMP來完成。 – Vamos 2009-10-22 18:40:37

回答

2

這要看!

你需要知道每個表的last_modified日期嗎?如果是這樣,那麼你需要那個專欄。

迎合域,然後擔心性能,除非你知道你將有該表的插入/更新的瘋狂數量...

0

嗯,我會說你應該有用於某些用戶操作頻繁更改記錄的表的列。最重要的是,如果您具有身份驗證功能,則存儲進行更改的人員會很有用。當有人向你詢問是誰對記錄進行了某些更改,因爲某些內容被破壞時,它也可能爲您節省一些痛苦。

2

我發現這是一個特別令人不安的信息。我只能在記錄被修改時得到,而不是修改的內容,或者由誰,爲什麼,如何修改。

我更喜歡爲我的重要表格提供審計表。

1

爲什麼你想要它?

這將是一個插入或更新的小性能命中。如果您需要發送自特定日期以來更改的記錄的信息(我們通常稱之爲增量饋送),則此功能非常有用。這對於數據更改的管理並不是非常有用。像Raj More一樣,我更喜歡使用審計表方法來存儲變更的數據,舊的和新的價值以及進行變更的人員。這可以用於回滾特定的更改或一組更改,如果僅依賴備份來回滾不良數據,則很難做到這一點。

在數據是靜態的或從批處理(如導入)而不是用戶界面更新的情況下,通常是沒有用的。爲什麼在查找表上有這樣的事情呢?

相關問題