简短结论:一般情况下,临时表不能持久化;但在某些数据库或特定用法下,可以“变相”持久化或跨会话保留。
下面分常见数据库说明:
CREATE TEMPORARY TABLE)CREATE TEMPORARY TABLE tmp_user (
id INT,
name VARCHAR(50)
);
连接断开后,tmp_user 就没了。
tmp_xxx)MEMORY 引擎表(重启丢失)CREATE TEMPORARY TABLE)CREATE TEMPORARY TABLE tmp_t (
id INT
) ON COMMIT PRESERVE ROWS;
但仍然:
UNLOGGED TABLE(性能好,但不保证 crash 安全)GLOBAL TEMPORARY TABLE)CREATE GLOBAL TEMPORARY TABLE tmp_t (
id NUMBER
) ON COMMIT DELETE ROWS;
特点:
#table)##table)但可以用:
tempdb 中的表(重启清空)| 数据库 | 临时表结构 | 数据 | 可持久化 |
|---|---|---|---|
| MySQL | 否 | 否 | ❌ |
| PostgreSQL | 否 | 否 | ❌ |
| Oracle | ✅ | ❌ | 结构可 |
| SQL Server | 否 | 否 | ❌ |
如果你能说下:用的是哪种数据库 + 想解决什么场景(缓存?中间计算?跨会话?),我可以给你更合适的方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。