2015-07-28 56 views
2

我們在我們的mysql數據庫中有一個觸發器,它在更新時會影響數據庫中的一些數據。但是對於一些計算,我們需要知道該觸發器何時首次創建以及何時最新更新。是否有可能從information_schema或其他地方獲取這些數據?如何獲取創建或上次更新mysql觸發器的時間?

回答

0

不幸的是答案是否定的。還有在目前的時間是在架構中的觸發器創建了一列,但它是未使用(總是NULL):

下面列目前總含有NULL:TRIGGER_CATALOG, EVENT_OBJECT_CATALOG,ACTION_CONDITION,ACTION_REFERENCE_OLD_TABLE, ACTION_REFERENCE_NEW_TABLE,和創建。

+0

傷心!創建/更新列可以非常有用! – FRX

+0

沒有解決問題,但接受爲最佳答案,因爲沒有人提供解決方案。但是,當有人編寫觸發器並在一段時間後發現它沒有按照它應該做的那樣並且希望通過觀察到目前爲止受到影響的行來反轉更改時,這不是一種常見情況嗎?希望創建的列在下一個mysql版本中變得有用。 – FRX

0

您可以在INFORMATION_SCHEMA.TRIGGERS找到有關觸發器的信息:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS 

希望有所幫助。

+0

不幸的是我沒有看到任何有用的列在觸發表 – FRX

0

試試這個,

我不知道你用於創建的數據類型。

但是,例如,我使用DATETIME。

插入之前,你只需要使用SET:

創建:

DELIMITER $$ CREATE 
    TRIGGER yourtriggername BEFORE INSERT ON yourtablename 
    FOR EACH ROW 
     SET NEW.created = NOW(); 
END$$ DELIMITER ; 

更新:

DELIMITER $$ CREATE 
    TRIGGER yourtriggername AFTER UPDATE ON yourtablename 
     FOR EACH ROW BEGIN 
     SET NEW.updated = CURRENT_TIMESTAMP where.....yourconditions; 
END$$ DELIMITER ; 

希望它可以幫助。

+0

謝謝,但這不是我所要求的。我想知道DBA何時在我的數據庫中創建/更新了特定的觸發器。 – FRX

+0

@FRX對不起。但是你寫這樣的問題,'但是對於一些計算,我們需要知道什麼時候這個觸發器是第一次創建的,什麼時候最後更新的。 '這是你在第一次創建這個觸發器時寫的。沒有任何與DBA相關的東西。所以我認爲你的意思只是觸發。 ;-) – kuttyraj

相關問題