2012-07-20 66 views
2

可能重复:
Local and Global temporary table in SQL SERVER#SQL服务器数据完整性表?

我想知道是否有任何人可以给我一个更好的解释在SQL #tables的工作。

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

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

这一切理论上都行之有效,但如果两个或二十个人在同一时间调用/执行sproc2呢?

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

回答

1

当你创建一个表,一个散列标签(如在你的例子) - 只有创建将有机会获得它,当关闭连接会被自动删除连接。

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

2

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

一个很好的解释可以找到here