我正在运行一个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
由于
答案 0 :(得分:1)
不,本地临时表(以单#
开头的那些)对您的连接是唯一的。没有其他连接可以放弃你的桌子。
您正在编写防御性代码以试图先删除这样的表格这一事实相当奇怪。
对于大多数简单查询,表变量可能会更好(因为那些更容易理解的范围)
答案 1 :(得分:1)
以#开头的表仅对查询的特定范围有效,运行相同查询的多个用户位于不同的范围内,因此不会相互影响。 ##临时表是全局的,其他会话可以影响它们。