2

好吧,我多年来一直在标准 T-SQL 编码中使用#temp 表,并认为我理解它们。然而,我被拖进了一个基于 MS Access 的项目,利用传递查询,发现了一些让我很困惑的东西。虽然也许是 Access 的内部运作让我上当了!?

在这里我们开始:在正常使用下,我理解如果我在 Sproc 中创建一个临时表,它的范围以 SProc 的结尾结束,并且默认情况下被删除。

在 Access 示例中,我发现可以在一个查询中执行此操作:

select top(10) * into #myTemp from dbo.myTable

然后在第二个单独的查询中:

从 #myTemp 中选择 *

这怎么可能 ?如果临时表在当前会话中终止,这是否意味着 Access 保持单个会话打开,并将该会话用于执行的所有查询?

还是我对范围的基本理解一直都是错误的?

希望有人可以帮助澄清幕后发生的事情!?

非常感谢

4

1 回答 1

1

我发现一个类似问题的答案:

临时表存储在 tempdb 中,直到连接被删除(或者在全局临时表的情况下,当使用它的最后一个连接被删除时)。您还可以(这样做是一个很好的做法)在使用 drop table 语句完成使用表时手动删除该表。

我希望这会有所帮助。

于 2013-09-04T14:09:50.880 回答