2015-07-28 24 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

相关问题