mysql - 是否可以在 MySQL 中设置多个自动 TIMESTAMP 列以跟踪每一列中所做的更改?

标签 mysql timestamp crud

将使用 PHP Crud 系统修改 MySQL 数据库,我需要跟踪每条记录的修改时间。

例如,如果我的表有 30 行和 30 列,并且我想在每个单独的条目旁边放置一个“最后修改时间”,我是否可以以某种方式设置与每个现有列相关的 30 个 TIMESTAMP 列来实现这一点?

或者有更好的方法吗?

这是我基本上想要的:

Column 1   C1s TIMESTAMP   Column 2   C2s TIMESTAMP   Column 3   C3s TIMESTAMP...
Red        (lastModified)  Green      (lastModified)  Blue       (lastModified)
Orange     (lastModified)  Purple     (lastModified)  Pink       (lastModified)
Yellow     (lastModified)  Black      (lastModified)  Brown      (lastModified)
... etc

最佳答案

虽然应该可以确定哪一列发生了变化。当您可以访问旧值和新值时,您可以检查每个字段是否发生了变化,如果发生了变化,则在相应字段中输入新的时间戳。像这样的东西:

CREATE TRIGGER updateTable
BEFORE UPDATE ON tableA
FOR EACH ROW 
BEGIN
    IF OLD.field1 != NEW.field1 THEN
        SET NEW.timestamp1 = now()
    END IF;
    IF OLD.field2 != NEW.field2 THEN
        SET NEW.timestamp2 = now()
    END IF;
END

我认为这可能有效,但我还没有测试过。

关于mysql - 是否可以在 MySQL 中设置多个自动 TIMESTAMP 列以跟踪每一列中所做的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515530/

相关文章:

php - mysql数据到excel

mysql - 将 Sku 与产品 ID 匹配并在 Magento 1.9 中有库存

php - 使用准备好的语句插入 CURRENT_TIMESTAMP

sql-server - SQL 服务器 : find out if a db table has changed (using entity framework)

asp.net-mvc - 处理用户重新提交删除操作的正确方法?

python - 提交Django表单后获取GET Var的PK

mysql - 在 SQL 中,从表 a 中选择所有列,其中列 a 值等于表 b 中最新条目的值?

php - 在函数内调用 ADODB?

python - 在 PySpark 中将 Unix 时间戳转换为 ms 时间戳

facebook - 确定用户何时创建 Facebook 帐户