-1

我正在做一个项目,我需要使用 cakephp 和 jQuery 添加彗星 ajax。

为此,我正在使用本教程

我已经成功实现了它,但现在我想用 mysql 表修改时间替换文本文件修改时间。

我使用SHOW TABLE STATUS了 mysql 查询并且我得到了 mysql 表更新时间,但我不知道为什么如果我添加、修改或删除记录,为什么表 Update_time 没有相应地更新。

现在请建议我是否可以使用 php 代码更新该表的详细信息,或者是否有其他更好的方法来完成此操作。

谢谢。

4

1 回答 1

1

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();
于 2012-12-18T09:51:48.990 回答