当特定列改变了Mysql / Joomla时,是否有时间戳?

时间:2012-10-23 18:34:21

标签: mysql joomla

是否有类似这样的函数或查询来跟踪上次更改行的时间? id没有timestamp列也不能添加一个,有特定的列,名称发布从0变为1,反之亦然,我想检查最后一次更改的时间。

在这里使用joomla,并尝试弄清楚插件何时发布/未发布,没有事件,只有我们拥有的事件是onExtensionBefore和保存之后,但没有跟踪发布状态的事件。

2 个答案:

答案 0 :(得分: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 :(得分:0)

对于onSave事件,您应该获取整行数据,包括已发布/状态。对于可能涉及保存的每个字段,您不需要特殊的触发器。 我会制作一个内容插件,其中有一个表格,该表格与所讨论的表格相关,如果状态发生变化,它会占用保存时间。