我正在做一个项目,我需要使用 cakephp 和 jQuery 添加彗星 ajax。
为此,我正在使用本教程。
我已经成功实现了它,但现在我想用 mysql 表修改时间替换文本文件修改时间。
我使用SHOW TABLE STATUS了 mysql 查询并且我得到了 mysql 表更新时间,但我不知道为什么如果我添加、修改或删除记录,为什么表 Update_time 没有相应地更新。
现在请建议我是否可以使用 php 代码更新该表的详细信息,或者是否有其他更好的方法来完成此操作。
谢谢。
如SHOW TABLE STATUS语法中所述:
Update_time上次更新数据文件的时间。对于某些存储引擎,此值为
NULL. 例如,在其系统表空间InnoDB中存储多个表,数据文件时间戳不适用。即使使用每个表在单独文件中的file-per-table模式,更改缓冲也会延迟对数据文件的写入,因此文件修改时间与上次插入、更新或删除的时间不同。对于,使用数据文件时间戳;但是,在 Windows 上,时间戳不会被更新更新,因此该值不准确。InnoDB.ibdMyISAM
相反,您可以创建触发器,在修改表时使用当前时间戳更新单独的表:
CREATE TABLE log (
table_name VARCHAR(64) NOT NULL,
lastmodified TIMESTAMP NOT NULL,
PRIMARY KEY (table_name)
);
CREATE TRIGGER foo_ins AFTER INSERT ON my_table FOR EACH ROW
INSERT INTO log (table_name, lastmodified) VALUES ('my_table', NOW())
ON DUPLICATE KEY UPDATE lastmodified = NOW();
CREATE TRIGGER foo_ins AFTER UPDATE ON my_table FOR EACH ROW
INSERT INTO log (table_name, lastmodified) VALUES ('my_table', NOW())
ON DUPLICATE KEY UPDATE lastmodified = NOW();
CREATE TRIGGER foo_ins AFTER DELETE ON my_table FOR EACH ROW
INSERT INTO log (table_name, lastmodified) VALUES ('my_table', NOW())
ON DUPLICATE KEY UPDATE lastmodified = NOW();