2014-09-03 50 views
0

我在MySQL test_info中有一個表。該表在隨機時間獲得插入命令,以便添加新記錄。這插入可以從任何地方發射。如何顯示最近插入到表

其實要做的是?

前端應該顯示將其在實時的方式插入表中最近的數據。

請建議我如何解決這個問題

+0

你可以使用一個字段保存創建的時間。設置默認當前時間戳。在fetvhing後,你可以比較它,並做你想要的。 – 2014-09-03 09:33:23

+0

你可以寫查詢嗎? – Aarthi 2014-09-03 09:36:24

+0

寫什麼查詢? – 2014-09-03 09:37:18

回答

1

你會使用$mysqli->insert_id檢索,這是自動生成的,並通過最後一個查詢使用的ID。看看here

編輯:根據Thorsten Kettner的評論,您也可以使用SELECT LAST_INSERT_ID();,據我瞭解,它不是基於當前連接,而是全局引用。

您甚至可以使用SELECT MAX(ID)獲取表格中的最後一個ID,如果設置爲AUTO_INCREMENT,最有可能是最近的ID。

+0

這是最好的方法。 – 2014-09-03 09:43:50

+0

這不是僅從此連接生成的最後一個ID嗎?所以你不會得到最後插入的記錄,因爲「這個插入可以從任何地方觸發」。到目前爲止我的理解。 – 2014-09-03 09:56:34

+0

@ThorstenKettner更新了我的回答 – Eliel 2014-09-03 10:05:45

0

首先,爲您的客戶端,檢查出Server-Sent-Events。其次,您需要一種機制來檢查服務器端的最新更新數據。

+0

如何編寫隨機插入查詢。 – Aarthi 2014-09-03 09:41:02

+0

對不起,我無法理解你的意思是什麼*隨機插入查詢* – simsim 2014-09-03 10:16:49

0

您可以使用mysql查詢來獲取最後的記錄。在我的例子中顯示瞭如何獲得最後10條記錄。

這裏是按日期DESC LIMIT的例子

SELECT * FROM表順序10

0

INSERT_ID有一定的限制,我不知道你會如何不同,從插入刪除。 我會做什麼將在每個地方,你需要跟蹤插入 表插入觸發器*(可能是你將要跟蹤更新和刪除以及)

你可能需要的是一個分離的表 - historical_data_tab它包含所有的要跟蹤的任何事件所觸發的歷史數據。

爲MySQL:

USE `db_name`; 
DELIMITER $$ 
CREATE DEFINER=`root`@`%` TRIGGER track_insert AFTER INSERT ON your_table 
FOR EACH ROW BEGIN 
     insert into historical_data_tab 
values (new.ID, 'INSERT',NOW());  

END 

講究new.ID和NOW()。如果你不需要原始的PK,只需在NULL中插入NULL,任何Auto Increment PK都會處理剩下的事情。現在將填充historical_data_tab表格,其中包含事件觸發時間的時間戳。 INSERT應該告訴你它是什麼類型的事件。

根據您使用的觸發器進行替換。 你可能想保留任何下列事件* 後刪除,插入的數據,更新前刪除,插入 或 ,更新

附:有很多方法可以滿足您的需求。不要去瘋狂的觸發器,並嘗試在前端捕捉前端事件本身

+0

它在sql或mysql中。我想插入在MySQL中。即使用PHP。 – Aarthi 2014-09-03 10:24:53

+0

請回復ninjabber – Aarthi 2014-09-03 10:39:03

+0

示例代碼爲mysql。 該方法是通用的 – ninjabber 2014-09-03 10:45:38

0

SELECT * FROM your_table其中ID = MAX(ID)