Sql server SQL Server中在存储过程中创建和使用的临时表

Sql server SQL Server中在存储过程中创建和使用的临时表,sql-server,tsql,stored-procedures,temp-tables,Sql Server,Tsql,Stored Procedures,Temp Tables,我正在存储过程中创建一个临时表。我知道每次会话都会创建和销毁它们,但有些事情还不清楚。假设两个用户访问我调用创建临时表的存储过程的网页,当两个用户创建同一个临时表时会有冲突吗 谢谢如果您创建一个本地临时表(如#temp),那么就没有问题了。但是,全局临时表(##temp)可以被其他会话访问,因此除非我别无选择,否则我从不使用它们。网上图书: 本地临时表在创建期间仅对其创建者可见 与创建表时的SQL Server实例连接相同 首先创建或引用的。本地临时表将在 用户断开与SQL Server实例的连

我正在存储过程中创建一个临时表。我知道每次会话都会创建和销毁它们,但有些事情还不清楚。假设两个用户访问我调用创建临时表的存储过程的网页,当两个用户创建同一个临时表时会有冲突吗


谢谢

如果您创建一个本地临时表(如#temp),那么就没有问题了。但是,全局临时表(##temp)可以被其他会话访问,因此除非我别无选择,否则我从不使用它们。网上图书:

本地临时表在创建期间仅对其创建者可见 与创建表时的SQL Server实例连接相同 首先创建或引用的。本地临时表将在 用户断开与SQL Server实例的连接。全球临时 表在创建之后对任何用户和任何连接都可见 当所有引用该表的用户 断开与SQL Server实例的连接


如果您创建一个本地临时表(如#temp),那么就没有问题。但是,全局临时表(##temp)可以被其他会话访问,因此除非我别无选择,否则我从不使用它们。网上图书:

本地临时表在创建期间仅对其创建者可见 与创建表时的SQL Server实例连接相同 首先创建或引用的。本地临时表将在 用户断开与SQL Server实例的连接。全球临时 表在创建之后对任何用户和任何连接都可见 当所有引用该表的用户 断开与SQL Server实例的连接


每个SQL连接都会创建临时表,因此两个调用同一存储过程的用户将创建相关表的单个实例

演示这一点的最简单方法是在两个单独的查询窗口中运行以下查询:

select 1 as someid
into #temp
每个窗口都有自己的连接,因此将创建一个唯一的临时表

如果查看
系统数据库>TempDB>临时表(可能需要刷新表列表),您将看到两个唯一命名的表,如:

#temp________xxx1
#temp________xxx2

然后,如果关闭其中一个查询窗口并刷新临时表列表,您将看到一个表已被删除。

每个SQL连接都会创建临时表,因此调用同一存储过程的两个用户将创建相关表的单个实例

演示这一点的最简单方法是在两个单独的查询窗口中运行以下查询:

select 1 as someid
into #temp
每个窗口都有自己的连接,因此将创建一个唯一的临时表

如果查看
系统数据库>TempDB>临时表(可能需要刷新表列表),您将看到两个唯一命名的表,如:

#temp________xxx1
#temp________xxx2

如果关闭其中一个查询窗口并刷新临时表列表,您将看到一个表已被删除。

也许这会有所帮助:谢谢,那篇文章读得真不错!也许这会有帮助:谢谢,那篇文章读得真不错!