oracle、mysql临时表区别

10 篇文章 2 订阅

oracle临时表

临时表分类:

  1. 会话级临时表(session表)

  2. 事务级临时表


会话级临时表(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会话级别临时表有些类似,不同的是表只对当前会话有效,即其他会话查询不像oracle查询不到数据,而是直接报表不存在,而且当前会话结束不会保留表结构,会直接drop掉表

创建方式:

create temporary table tmp_table(
id_ int
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值