2

可能重复:
SQL SERVER 中的本地和全局临时表

我想知道是否有人可以更好地解释 SQL 中#tables 的工作原理。

在我们的一个存储过程中,我们创建了一个临时表 (#table),其中数据由当前活动的存储过程存储。为了参数,我们称之为Sproc1

Sproc1 由sproc2 调用。调用后,sproc2 从#table 收集数据,然后删除#table,因为不再需要它。

理论上这一切都很好,但是如果两个或二十个人同时调用/执行 sproc2 会怎样?

所以,我想知道 SQL 是否会为使用 sproc2 的每个调用者创建 #table 的新实例(通过连接链接),还是会发生冲突?

4

3 回答 3

3

这个问题有一些很好的回答可以回答你的问题。

SQL Server 中的本地和全局临时表

于 2012-07-20T09:18:25.367 回答
2

你应该没事。#table临时表仅对同一 SQL 会话中的调用可见。

可以在这里找到一个很好的解释。

于 2012-07-20T09:23:37.803 回答
1

当您创建带有一个哈希标记的表时(如您的示例中) - 只有创建它的连接才能访问它,并且在连接关闭时将自动删除。

如果您需要确保所有连接都可以看到它,您可以使用全局临时表(##table),但它们也会在连接关闭时被删除,因此请确保您不要假设它存在于您的过程中。

于 2012-07-20T09:23:23.497 回答