2012-12-18 26 views
-1

我工作在一個項目中,我需要使用CakePHP和jQuery添加彗星阿賈克斯。mysql表的地位沒有改變

對於我使用this tutorial

我已經成功地實現了它,但現在我要替換文本文件的修改時間與MySQL表的修改時間。

我已經使用SHOW TABLE STATUS MySQL查詢和我有MySQL表更新時間,但我不知道爲什麼某種方式表Update_time沒有被更新accoringly如果我添加,修改或刪除記錄。

現在請建議我,如果我可以使用PHP代碼更新該表詳細信息或有其他更好的方式來做到這一點。

謝謝。

+0

你能告訴你的代碼? – codefreak

+0

你可以在鏈接找到代碼,我只是想用mysql表更新時間替換文本文件實現。 –

回答

1

由於SHOW TABLE STATUS Syntax下記載:

  • Update_time

    當數據文件的最後更新。對於某些存儲引擎,此值爲NULL。例如,在其system tablespace和數據文件的時間戳InnoDB存儲多個表不適用。即使file-per-table模式在單獨.ibd文件中的每個InnoDB表,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(); 
+0

所以使用觸發器是否可以改變表update_time? –

+2

@DipeshParmar:不,使用觸發器可以手動跟蹤更新時間。 – eggyal

+1

Thanx的幫助,我已經接受了這個答案..收益很多... 100000+。 –