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
相关推荐
摇滚侠8 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试9 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_937767169 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_11 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
蒸蒸yyyyzwd11 小时前
kafka、redis、mysql不熟悉问题总结
笔记·八股
hgy896911 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
摇滚侠12 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
I Am a robert girl12 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒13 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB13 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析