如果多个用户使用我的应用程序,mssql中的临时表会发生什么?

时间:2012-02-23 19:01:36

标签: sql-server-2005

我正在运行一个sql查询,它涉及创建一个临时表来对其进行一些处理。我的问题是我的临时sql表会发生什么,如果让10K用户使用我的app.I我正在创建并将数据插入表中,如下所示

BEGIN TRANSACTION;
BEGIN TRY
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN   DROP TABLE #Temp; END
Select * Into   #Temp From     [Booking]  where purchaseorder='123'
-- Do some processing on temp table and 
-- save data into some other table.
 IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN DROP TABLE #Temp; END 

END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;
GO

除了创建它的用户之外,是否会被其他用户删除? 我的申请是在asp.net

由于

2 个答案:

答案 0 :(得分:1)

不,本地临时表(以单#开头的那些)对您的连接是唯一的。没有其他连接可以放弃你的桌子。

您正在编写防御性代码以试图先删除这样的表格这一事实相当奇怪。

对于大多数简单查询,表变量可能会更好(因为那些更容易理解的范围)

答案 1 :(得分:1)

以#开头的表仅对查询的特定范围有效,运行相同查询的多个用户位于不同的范围内,因此不会相互影响。 ##临时表是全局的,其他会话可以影响它们。