Temporary Table(临时表)本身不会“无故”丢数据,但它的生命周期决定了数据在哪些情况下会丢失。是否“丢数据”取决于你用的数据库类型和场景。
下面按常见数据库说明:
CREATE TEMPORARY TABLE tmp_xxx (...);
CREATE GLOBAL TEMPORARY TABLE tmp_xxx (...)
ON COMMIT PRESERVE ROWS;
✅ 会丢的情况
DROP TEMPORARY TABLE❌ 不会丢的情况
⚠️ 注意
MySQL 的 TEMPORARY TABLE 只在当前 session 可见,其他 session 看不到,也拿不到数据。
CREATE TEMPORARY TABLE tmp_xxx (...);
✅ 会丢的情况
ON COMMIT DROP 的事务结束❌ 不会丢的情况
ON COMMIT PRESERVE ROWSPostgreSQL 临时表也只在当前 session 可见。
#tmp##tmp| 类型 | 生命周期 |
|---|---|
#tmp |
当前 session |
##tmp |
所有 session,最后一个引用消失时 |
✅ 会丢:
##tmp 的 session 断开Oracle 的临时表比较特殊:
CREATE GLOBAL TEMPORARY TABLE tmp_xxx (...)
ON COMMIT DELETE ROWS; -- 或 PRESERVE ROWS
临时表不会随意丢数据,但只要“连接断了 / session 结束 / 服务重启”,数据就没了。
如果你担心“丢数据”,通常说明:
如果你能告诉我:
我可以直接给你该用临时表还是普通表的建议。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。