php - 获取 mysql 表数据的 md5/sha1 哈希?

标签 php mysql sql

长话短说,在全局包含的配置文件中,我从表中获取设置,并使用数据库表中的 settingKey 和 settingVal 在我的代码中定义一个常量,现在我认为没有那么多开销,但是如果我最终得到了大量设置,最好检查它们是否已更改,如果已更改,则定义它们,否则不要。

所以最重要的是,我/我是否应该获取表的散列并将其与最后已知的表散列进行比较以查看值是否已更改?或者我是否以完全错误的方式解决这个问题,并且有更有效的方法?

谢谢!

最佳答案

创建一个触发器,将上次更新时间等写入日志表

CREATE TABLE LOG (
  id integer PRIMARY KEY AUTOINCREMENT,
  tablename varchar NOT NULL,
  action ENUM('insert','delete','update') NOT NULL,
  action_time DATETIME NOT NULL)

DELIMITER $$

CREATE TRIGGER ai_table1 AFTER INSERT ON table1
BEGIN
  INSERT INTO log (id, tablename, action, action_time)
     VALUES (null, 'table1', 'insert', NOW())
END$$

CREATE TRIGGER ad_table1 AFTER DELETE ON table1
BEGIN
  INSERT INTO log (id, tablename, action, action_time)
     VALUES (null, 'table1', 'delete', NOW())
END$$

CREATE TRIGGER au_table1 AFTER UPDATE ON table1
BEGIN
  INSERT INTO log (id, tablename, action, action_time)
     VALUES (null, 'table1', 'update', NOW())
END$$

DELIMITER ;

请注意,触发器不会触发FOR EACH ROW,因为您只想知道任何更改发生的日期,这会使触发器稍快一些(并且日志会稍短一些) 在进行多次更新/删除/插入时。

链接:
触发器:http://dev.mysql.com/doc/refman/5.1/en/triggers.html

关于php - 获取 mysql 表数据的 md5/sha1 哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820849/

相关文章:

php - 如何构建支持多语言(英语、法语、中文等)的 PHP 应用程序

php - 'unlink',执行函数时权限被拒绝错误[exec]

php - 我如何使用 SQL Select Insert 将行从一个表复制到另一个表

php - 让用户更改自己的密码?

javascript - 使用隐藏输入将 Javascript 变量传递给 PHP

php - 如何传递两个变量以在 Controller 中查看(laravel 5.3)

mysql - 在不完整的日期序列上加入下一个日期 +1 天

mysql - 如何将 MySQL 中不明确的别名解析为当前表的定义

SQL Server 2005 - 多处理器使用

php - 更新 Woocommerce 3 中的产品可见性