oracle、mysql临时表区别
发布时间:2022-12-19 15:36:37 所属栏目:MySql教程 来源:
导读: oracle临时表
临时表分类:
会话级临时表(session表)
事务级临时表
会话级临时表(session表)
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出
临时表分类:
会话级临时表(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 ); (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐