我在MySQL test_info中有一个表。该表在随机时间获得插入命令,以便添加新记录。这插入可以从任何地方发射。如何显示最近插入到表
其实要做的是?
前端应该显示将其在实时的方式插入表中最近的数据。
请建议我如何解决这个问题
我在MySQL test_info中有一个表。该表在随机时间获得插入命令,以便添加新记录。这插入可以从任何地方发射。如何显示最近插入到表
其实要做的是?
前端应该显示将其在实时的方式插入表中最近的数据。
请建议我如何解决这个问题
你会使用$mysqli->insert_id
检索,这是自动生成的,并通过最后一个查询使用的ID。看看here。
编辑:根据Thorsten Kettner的评论,您也可以使用SELECT LAST_INSERT_ID();
,据我了解,它不是基于当前连接,而是全局引用。
您甚至可以使用SELECT MAX(ID)
获取表格中的最后一个ID,如果设置为AUTO_INCREMENT
,最有可能是最近的ID。
这是最好的方法。 – 2014-09-03 09:43:50
这不是仅从此连接生成的最后一个ID吗?所以你不会得到最后插入的记录,因为“这个插入可以从任何地方触发”。到目前为止我的理解。 – 2014-09-03 09:56:34
@ThorstenKettner更新了我的回答 – Eliel 2014-09-03 10:05:45
首先,为您的客户端,检查出Server-Sent-Events。其次,您需要一种机制来检查服务器端的最新更新数据。
您可以使用mysql查询来获取最后的记录。在我的例子中显示了如何获得最后10条记录。
这里是按日期DESC LIMIT的例子
SELECT * FROM表顺序10
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应该告诉你它是什么类型的事件。
根据您使用的触发器进行替换。 你可能想保留任何下列事件* 后删除,插入的数据,更新前删除,插入 或 ,更新
附:有很多方法可以满足您的需求。不要去疯狂的触发器,并尝试在前端捕捉前端事件本身
SELECT * FROM your_table其中ID = MAX(ID)
你可以使用一个字段保存创建的时间。设置默认当前时间戳。在fetvhing后,你可以比较它,并做你想要的。 – 2014-09-03 09:33:23
你可以写查询吗? – Aarthi 2014-09-03 09:36:24
写什么查询? – 2014-09-03 09:37:18