2012-10-23 22 views
0

有沒有這樣的事情,一個函數或查詢跟蹤行最後一次更改的時間? ID沒有時間戳列,也不能添加一個,有特定的列,名稱發佈,從0改爲1,反之亦然,我想檢查它最後更改的時間。是否有特定列已更改Mysql/Joomla的時間戳?

在這裏和joomla一起工作,並試圖找出插件發佈/未發佈時,沒有事件發生,只有事件是onExtensionBefore和保存後,但沒有事件跟蹤發佈狀態。

+0

你可以添加另一個表嗎? – diEcho

+0

不,我只能檢查現有的一個,它沒有發佈時間列 – Benn

+1

@diEcho我編輯我的帖子,所以你會更好地理解我正在處理 – Benn

回答

1

添加觸發器,在每個columnname更新執行:

DELIMITER | 
CREATE TRIGGER `TriggerName` 
    AFTER UPDATE ON `TriggerTable` 
    FOR EACH ROW 
    BEGIN 
     IF NEW.columnname <> OLD.columnname THEN 
      SET `timestampcolumn`=NOW(); 
     END IF 
    END 
    | 

之後,如果你更新columnname應該更新timestampcolumn到當前時間。

注:定義觸發器時DELIMITER [delimiter]更改您的分隔符。分隔符應該是不在CREATE TRIGGER定義中的東西。默認分隔符是;並將其從默認更改爲必需,因爲;之後SET ´timestampcolumn´=NOW();會以其他方式中斷TRIGGER定義。

+1

就像說,不能添加/更改列 – Benn

+0

@Benn然後,你需要存儲信息的其他地方,像其他表,其他數據庫,文件,素描本... –

0

對於onSave事件,您應該獲取整行數據,包括髮布/狀態狀態。對於可能涉及保存的每個字段,您都不需要特殊的觸發器。 我會製作一個內容插件,它具有一個表格,可以在保存狀態發生變化時節省時間。

+0

問題是,我們製作的插件是系統插件,onSave僅用於內容插件 – Benn

+0

我不確定你的意思。任何保存的表單都會有一個onSave。所以你可以使用一個內容插件,但是如果你想使用一個系統插件,你可以...但爲什麼你會想要在每次加載時檢查該插件,當你知道它應該只在你編輯在管理員表單中? 你還想要插件做什麼?你還有什麼版本的Joomla? – Elin

+0

用戶可以禁用插件擴展插件管理器:插件,無需進入插件編輯窗體,並且沒有任何事件可以連接到,測試25/3.0,製作css/js壓縮插件。在插件窗體中輸入,我們刪除緩存並創建新的緩存,但是如果用戶在插件列表中禁用了插件,我們就無法做到這一點。所以告訴我們何時禁用/啓用插件的時間戳可以幫助我們交叉緩存文件的參考時間戳,並在未發佈時間比緩存文件時間戳更新時刪除緩存。 – Benn