我有两个程序insertTemp()和Search()。
下面是InsertTemp():
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertTemp`(
IN keyword TEXT
)
BEGIN
DROP TABLE IF EXISTS TempResult;
CREATE TEMPORARY TABLE TempResult
(
id INT(11),
title TEXT,
author TEXT,
publisher TEXT,
);
INSERT INTO tempCariOpac
SELECT * from TempResult;
END和Search():
CREATE DEFINER=`root`@`localhost` PROCEDURE `Search`(
IN limit1 INT,
IN limit2 INT,
)
BEGIN
SELECT * from catalogs
LIMIT limit1,limit2;
END在我的第一个页面上,我执行了InsertTemp()和Search(),在第二个页面上,我只运行了Search(),因为在第一个页面上,我已经运行了InsertTemp()并创建了临时表。Search()正在从临时表中搜索数据,但是转到第二页后,我的临时表就不存在了。我认为这是由封闭的连接造成的。
我可以使sql连接保持活动状态吗?
在.Net中,我没有这个问题。
发布于 2015-12-31 14:36:20
临时表只对创建它的连接可见。可能有300个临时表,所有临时表的名称都相同,并且彼此之间不会中断或冲突。实际上,您不能访问由其他连接创建的临时表。
因此,当您进行查询时,您将从同一连接创建的临时表中获得结果。
如果关闭连接,则会删除临时表。因此,故事的寓意是,创建一个临时表,然后查询它,所有这些都在相同的连接中。
但是,尝试使用此方法从php创建mysql的持久连接,这可能会对您有所帮助。
https://stackoverflow.com/questions/34540853
复制相似问题