#Table在SQL服务器数据完整性?

时间:2012-07-20 09:13:59

标签: sql sql-server sql-server-2008

  

可能重复:
  Local and Global temporary table in SQL SERVER

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

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

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

理论上这一切都运作良好,但如果两个或二十个人在同一时间调用/执行sproc2会怎么样?

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

3 个答案:

答案 0 :(得分:3)

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

Local and global temporary tables in SQL Server

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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