我正在开发一个项目,我需要使用cakephp和jQuery添加comet ajax。
因为我正在使用this tutorial。
我已经成功实现了它,但现在我想用mysql表修改时间替换文本文件修改时间。
我使用了SHOW TABLE STATUS
mysql查询,我得到了mysql表更新时间,但我不知道为什么不知何故表Update_time如果我添加,修改或删除记录都没有得到更新。
现在请建议我是否可以使用php代码更新该表详细信息,或者是否有其他更好的方法来实现此目的。
感谢。
答案 0 :(得分:1)
Update_time
上次更新数据文件时。对于某些存储引擎,此值为
NULL
。例如,InnoDB
在其system tablespace中存储多个表,并且数据文件时间戳不适用。即使在file-per-table模式下,每个InnoDB
表位于单独的.ibd
文件中,change buffering也可以延迟写入数据文件,因此文件修改时间与时间不同最后一次插入,更新或删除。对于MyISAM
,使用数据文件时间戳;但是,在Windows上,更新不会更新时间戳,因此值不准确。
相反,您可以创建triggers,以便在修改表时使用当前时间戳更新单独的表:
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();