温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Temporary Table会丢数据吗

发布时间:2026-09-05 18:19:32 来源:亿速云 阅读:82 作者:小樊 栏目:数据库

Temporary Table(临时表)本身不会“无故”丢数据,但它的生命周期决定了数据在哪些情况下会丢失。是否“丢数据”取决于你用的数据库类型和场景。

下面按常见数据库说明:


1. MySQL

分类

  • 本地临时表(SESSION 级)
    CREATE TEMPORARY TABLE tmp_xxx (...);
    
  • 全局临时表(MySQL 8.0+ 支持)
    CREATE GLOBAL TEMPORARY TABLE tmp_xxx (...)
    ON COMMIT PRESERVE ROWS;
    

什么时候会丢数据?

会丢的情况

  • 当前 连接(session)断开
  • 连接被连接池回收 / 超时
  • 服务重启(MySQL 重启)
  • 显式 DROP TEMPORARY TABLE

不会丢的情况

  • 同一连接内,事务提交 / 回滚(除非显式删除)
  • 普通表操作不会影响临时表

⚠️ 注意
MySQL 的 TEMPORARY TABLE 只在当前 session 可见,其他 session 看不到,也拿不到数据。


2. PostgreSQL

分类

CREATE TEMPORARY TABLE tmp_xxx (...);

什么时候会丢数据?

会丢的情况

  • session 结束
  • 连接断开
  • 服务重启
  • ON COMMIT DROP 的事务结束

不会丢的情况

  • 同一事务 / 同一 session 内正常使用
  • 默认 ON COMMIT PRESERVE ROWS

PostgreSQL 临时表也只在当前 session 可见。


3. SQL Server

分类

  • 本地临时表:#tmp
  • 全局临时表:##tmp

什么时候会丢数据?

类型 生命周期
#tmp 当前 session
##tmp 所有 session,最后一个引用消失时

✅ 会丢:

  • 连接关闭
  • SQL Server 重启
  • 最后一个使用 ##tmp 的 session 断开

4. Oracle

Oracle 的临时表比较特殊:

CREATE GLOBAL TEMPORARY TABLE tmp_xxx (...)
ON COMMIT DELETE ROWS; -- 或 PRESERVE ROWS
  • 表结构持久
  • 数据只在 session / 事务中存在
  • 服务重启不会丢“表”,但会清空“数据”

总结一句话

临时表不会随意丢数据,但只要“连接断了 / session 结束 / 服务重启”,数据就没了。

如果你担心“丢数据”,通常说明:

  • 你不该用临时表(该用普通表)
  • 或你期望跨 session / 跨请求使用数据

如果你能告诉我:

  • 用的是哪种数据库(MySQL / PG / SQL Server / Oracle)
  • 使用场景(接口请求?批处理?并发?)

我可以直接给你该用临时表还是普通表的建议。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI