0

我知道#temp 是温度。表仅对特定会话有效。但是如果我在两个不同的会话中定义#temp,并同时运行它们会发生冲突。如果不是,那么这些表实际上是如何存储在内存中的。这与##Temp 有何不同????

4

2 回答 2

2

带有单个 # 的临时表是“本地的”,而带有双 ## 的临时表是“全局的”。

一旦定义它们的存储过程完成,本地的将退出范围。

全局的可以被其他用户使用,或者被不同存储过程的同一用户使用,或者被同一过程的多次调用使用。只有在最后一个引用它们的用户不再引用它们之后,它们才会被删除,即在最后一个存储过程完成之后。

全部存储在 tempdb 数据库中;“记忆”中没有。

于 2013-10-03T04:49:29.813 回答
1

创建表

存储在tempdb中 sysobjects 表中的临时表的全名由 CREATE TABLE 语句中指定的表名和系统生成的数字后缀组成。

所以它存储在 tempdb 中。

也来自SQL Server 中的临时表

在 TempDB 数据库中创建临时表和表变量

于 2013-10-03T04:36:35.937 回答