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

use*_*650 3 php mysql sql

简而言之,在一个全局包含的配置文件中,我从表中获取设置,并使用来自数据库表的settingKey,settingVal在我的代码中定义一个常量,现在我认为没有那么多开销,但是如果我结束了有大量的设置,最好检查一下它们是否已经改变,如果有的话,定义它们,否则不然.

那么底线,我应该/我可以得到一个表的哈希并将其与上一个已知的表哈希进行比较,以查看值是否已更改?或者我是以完全错误的方式解决这个问题,还有一种更有效的方法吗?

谢谢!

Joh*_*ica 5

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

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 ;
Run Code Online (Sandbox Code Playgroud)

请注意,触发并没有FOR EACH ROW,因为你只希望发生任何变化的日期,这使得触发器稍快(和日志略短)进行多次更新时/删除/插入.

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