SQL Server笔记 -- 第70章:临时表的使用

70.1 删除临时表

临时表必须拥有唯一标识(本地临时表在当前会话内唯一,全局临时表在整个实例内唯一)。若再次创建同名临时表,会报错:

已有名为 '#tempTable' 的对象存在于数据库中。

如果脚本会多次运行并创建同名临时表,应在创建前先删除:

sql 复制代码
DROP TABLE #tempTable

首次运行前该表并不存在,直接执行 DROP 会报错:

无法删除表 '#tempTable',因为该表不存在或您没有权限。

因此通常先判断是否存在再删除:

sql 复制代码
IF OBJECT_ID('tempdb..#tempTable','U') IS NOT NULL
  DROP TABLE #tempTable

70.2 本地临时表

  • 仅在当前连接会话期间存在
  • 会话断开时自动删除
  • 表名以单个 # 开头(例如 #temp)
sql 复制代码
CREATE TABLE #LocalTempTable(
  StudentID     int,
  StudentName   varchar(50),
  StudentAddress varchar(150)
)

INSERT INTO #LocalTempTable VALUES (1, '小明', '北京')
SELECT * FROM #LocalTempTable

关闭并重新打开查询窗口后再操作,会报错:

对象名 '#LocalTempTable' 无效。

70.3 全局临时表

  • 表名以 ## 开头
  • 仅当所有引用该表的用户都断开连接时才被删除
  • 行为类似永久表,但生命周期随会话结束而结束
  • 任何数据库用户都可见,不受常规权限限制
sql 复制代码
CREATE TABLE ##NewGlobalTempTable(
  StudentID     int,
  StudentName   varchar(50),
  StudentAddress varchar(150)
)

INSERT INTO ##NewGlobalTempTable VALUES (1, 'Ram', 'India')
SELECT * FROM ##NewGlobalTempTable
相关推荐
m0_733565461 分钟前
JavaScript中Reflect-ownKeys获取所有键名的优势
jvm·数据库·python
前端若水1 分钟前
记忆机制:短期记忆、长期记忆与向量数据库
数据库·人工智能
2301_815901971 小时前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
m0_463672201 小时前
SQL优化SQL关联查询中的排序字段_减少临时空间占用与内存开销
jvm·数据库·python
我叫Double1 小时前
简易版的EINO基于redis库的向量搜索项目v2
数据库·redis·bootstrap
iuvtsrt1 小时前
存储过程如何处理海量数据的批处理_循环提交与分段LIMIT结合
jvm·数据库·python
yexuhgu1 小时前
SQL如何检查字符串是否存在:INSTR与LOCATE函数使用
jvm·数据库·python
2301_783848651 小时前
SQL如何用SQL子查询实现关联报表生成_嵌套逻辑关联多表
jvm·数据库·python
sheeta19982 小时前
LeetCode 每日一题笔记 日期:2026.05.13 题目:1674. 使数组互补的最少操作次数
笔记·算法·leetcode
techdashen2 小时前
dial9:给 Tokio 装上“飞行记录仪“
java·数据库·redis