加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

oracle、mysql临时表区别

发布时间:2022-12-19 15:36:37 所属栏目:MySql教程 来源:
导读:  oracle临时表

  临时表分类:

  会话级临时表(session表)

  事务级临时表

  会话级临时表(session表)

  会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出
  oracle临时表
 
  临时表分类:
 
  会话级临时表(session表)
 
  事务级临时表
 
  会话级临时表(session表)
 
  会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据
 
  Create Global Temporary table Table_Name
  (
  id_ int
  )
  On Commit Preserve Rows;
  或者从另外一个表创建:
 
  create global temporary table Table_Name on commit rpeserve rows as
  select id from Table_Name1;
  测试:
 
  insert into Table_Name(id_) values(12);
  当前会话窗口查询:
 
  在这里插入图片描述
 
  另起一个窗口查询:
 
  在这里插入图片描述
 
  从当前会话窗口插入数据能查询到,另起一个会话创建查询不到数据,退出当前会话自动清空数据(表结构保留)
 
  删除临时表需要注意的是有时候会出现ORA-14452,意思是有资源还在占用临时表,无法删除。需要找到临时表的会话,手动杀掉
 
  -- 查找还在使用临时表的会话
  SELECT sid, serial#
  FROM v$session
  WHERE sid = (SELECT sid FROM v$lock
  WHERE id1 = (SELECT object_id  FROM dba_objects
  WHERE object_name = UPPER('临时表名')));
  -- 使用上面查出的sid和serial#,杀掉会话
  ALTER system kill session 'sid,serial#';
  事物级临时表
 
  事务级临时表是指临时表中的数据只在事务生命周期中存在。
 
  create global temporary table Table_Name
  (
  id_ int
  )
  on Commit Delete Rows;
  测试
 
  insert into Table_Name(id_) values(123)
  select * from Table_Name
  不提交事物:
 
  在这里插入图片描述
 
  执行commit后再次查询:
 
  在这里插入图片描述
 
  当你执行commit或rollback操作,再次查询表内的数据就查询不到了(表结构保留)
 
  Mysql临时表
 
  mysql临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。和oracle会话级别临时表有些类似,不同的是表只对当前会话有效MySQL 临时表,即其他会话查询不像oracle查询不到数据,而是直接报表不存在,而且当前会话结束不会保留表结构,会直接drop掉表
 
  创建方式:
 
  create temporary table tmp_table(
  id_ int
  );
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!