长话短说,在全局包含的配置文件中,我从表中获取设置,并使用数据库表中的 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/