我有2个程序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
和搜索():
CREATE DEFINER=`root`@`localhost` PROCEDURE `Search`(
IN limit1 INT,
IN limit2 INT,
)
BEGIN
SELECT * from catalogs
LIMIT limit1,limit2;
END
在我的第一页上,我执行了InsertTemp()
和Search()
,在我的第二页上我只运行了搜索(),因为在第一页上我已经运行InsertTemp()
并创建了临时表。 Search()
正在从临时表中搜索数据,但在转到第2页后,我的临时表不存在。我认为它是由一个封闭的连接引起的。
我可以使sql连接保持活跃吗?
在.Net中,我没有遇到这些问题。
答案 0 :(得分:1)
临时表仅对创建它的连接可见。可能有300个临时表,所有临时表都使用相同的名称,并且不会中断或相互冲突。实际上,您无法访问由其他连接创建的临时表。
因此,当您查询时,您将从同一连接创建的临时表中获得结果。
如果关闭连接,临时表将被删除。所以,故事的道德,创建一个临时表,然后查询它,所有都在同一个连接。
但是,请尝试使用此方法从php创建mysql的持久连接,这可能会帮助您。