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

oracle、mysql临时表区别

发布时间:2022-12-16 15:04:48 所属栏目:MySql教程 来源:未知
导读: oracle临时表
临时表分类:
会话级临时表(session表)
事务级临时表
会话级临时表(session表)
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Or

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
);

(编辑:沈阳站长网)

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

    推荐文章