温馨提示×

温馨提示×

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

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

临时表能持久化吗

发布时间:2026-10-17 00:38:05 来源:亿速云 阅读:87 作者:小樊 栏目:数据库

简短结论:一般情况下,临时表不能持久化;但在某些数据库或特定用法下,可以“变相”持久化或跨会话保留。

下面分常见数据库说明:


1. MySQL

普通临时表(CREATE TEMPORARY TABLE)

  • 生命周期:仅当前会话(连接)可见
  • 会话结束:表结构和数据自动删除
  • 不能持久化
CREATE TEMPORARY TABLE tmp_user (
  id INT,
  name VARCHAR(50)
);

连接断开后,tmp_user 就没了。

可“持久化”的替代方案

  • 使用普通表 + 命名规范(如 tmp_xxx)
  • 使用 MEMORY 引擎表(重启丢失)
  • 使用物理表 + 定时清理

2. PostgreSQL

临时表(CREATE TEMPORARY TABLE)

  • 默认事务结束或会话结束删除
  • 可控制生命周期:
CREATE TEMPORARY TABLE tmp_t (
  id INT
) ON COMMIT PRESERVE ROWS;

但仍然:

  • 只对当前会话可见
  • 会话结束自动删除
  • 不能跨重启

持久化替代

  • 使用普通表
  • 使用 UNLOGGED TABLE(性能好,但不保证 crash 安全)

3. Oracle

临时表(GLOBAL TEMPORARY TABLE)

  • 表结构持久存在
  • 数据会话或事务级临时
CREATE GLOBAL TEMPORARY TABLE tmp_t (
  id NUMBER
) ON COMMIT DELETE ROWS;

特点:

  • ✅ 表结构持久化(在数据字典中)
  • ❌ 数据不持久化
  • 适合“结构复用,数据临时”

4. SQL Server

本地临时表(#table)

  • 当前会话
  • 会话结束自动删除

全局临时表(##table)

  • 所有会话可见
  • 最后一个引用会话结束删除

临时表不能持久化

但可以用:

  • 普通表
  • tempdb 中的表(重启清空)

总结对比

数据库 临时表结构 数据 可持久化
MySQL 否 否 ❌
PostgreSQL 否 否 ❌
Oracle ✅ ❌ 结构可
SQL Server 否 否 ❌

如果你能说下:用的是哪种数据库 + 想解决什么场景(缓存?中间计算?跨会话?),我可以给你更合适的方案。

向AI问一下细节

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

AI
助
手