如何获取创建或上次更新mysql触发器的时间?
问题描述:
我们在我们的mysql数据库中有一个触发器,它在更新时会影响数据库中的一些数据。但是对于一些计算,我们需要知道该触发器何时首次创建以及何时最新更新。是否有可能从information_schema或其他地方获取这些数据?如何获取创建或上次更新mysql触发器的时间?
答
不幸的是答案是否定的。还有在目前的时间是在架构中的触发器创建了一列,但它是未使用(总是NULL):
下面列目前总含有NULL:TRIGGER_CATALOG, EVENT_OBJECT_CATALOG,ACTION_CONDITION,ACTION_REFERENCE_OLD_TABLE, ACTION_REFERENCE_NEW_TABLE,和创建。
答
您可以在INFORMATION_SCHEMA.TRIGGERS找到有关触发器的信息:
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
希望有所帮助。
+0
不幸的是我没有看到任何有用的列在触发表 – FRX
答
试试这个,
我不知道你用于创建的数据类型。
但是,例如,我使用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 ;
希望它可以帮助。
伤心!创建/更新列可以非常有用! – FRX
没有解决问题,但接受为最佳答案,因为没有人提供解决方案。但是,当有人编写触发器并在一段时间后发现它没有按照它应该做的那样并且希望通过观察到目前为止受到影响的行来反转更改时,这不是一种常见情况吗?希望创建的列在下一个mysql版本中变得有用。 – FRX