温馨提示×

温馨提示×

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

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

Temporary Table能跨库吗

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

简短结论先给出:临时表(Temporary Table)通常不能“跨库”直接访问,这里的“跨库”要分几种场景来看。


1. 同一数据库实例内:不同 schema / database ✅ 可以(有前提)

MySQL 为例:

CREATE TEMPORARY TABLE temp_table (id INT);
  • 临时表属于 当前连接(session)
  • 在当前连接里,可以访问同一个实例中的不同 database
  • 但:
    • 不能用 db1.temp_table 这种方式跨库引用(临时表不挂在具体 schema 下)
    • 只能在创建它的 session 中使用

✅ 示例(同一实例):

USE db1;
CREATE TEMPORARY TABLE t1 (id INT);

USE db2;
SELECT * FROM t1; -- ✅ 可以(同一连接)

❌ 示例(跨连接):

-- 连接A
CREATE TEMPORARY TABLE t1 (id INT);

-- 连接B
SELECT * FROM t1; -- ❌ 看不到

2. 跨数据库实例(不同 server / 不同 MySQL 实例) ❌ 不可以

  • 临时表 不会同步
  • 不能通过:
    • 主从复制
    • federated 表
    • dblink(MySQL 没有原生 dblink) 访问到另一台机器上的临时表

3. 其他数据库对比

PostgreSQL

  • 临时表也是 session 级
  • 同一实例不同 schema ✅
  • 跨实例 ❌

SQL Server

  • 本地临时表 #t:当前连接
  • 全局临时表 ##t:所有连接,但仍在同一实例
  • 跨库(同实例)✅
  • 跨实例 ❌(除非用 Linked Server + 普通表)

Oracle

  • 临时表是 全局定义 + 会话数据
  • 同实例跨 schema ✅
  • 跨库 ❌(除非 DB Link + 普通表)

4. 常见替代方案(如果你需要“跨库/跨连接共享临时数据”)

  • 使用 普通表 + 明确清理逻辑
  • 使用 内存表(如 MySQL MEMORY 引擎)
  • 使用 中间结果服务(Redis / 消息队列)
  • ETL 落盘中间表

一句话总结

临时表只能被创建它的连接访问,不能跨连接,也不能跨实例;同实例不同库通常可以,但不建议依赖“跨库”语义。

如果你能告诉我:

  • 用的是哪种数据库(MySQL / PG / SQL Server / Oracle)
  • 是“同实例不同库”还是“不同服务器

我可以给你更精确的建议和写法。

向AI问一下细节

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

AI