扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年10月7日
关键字: ORACLE
在本页阅读全文(共2页)
3、例子:
1)、会话级(Session关闭掉之后数据就没有了,当Commit的时候则数据还在,当Rollback的时候则数据也是一样被回滚):
STU_ID CLASS_ID STU_NAME STU_MEMO ------ -------- -------- ------------------------ 1 1 张三 福建 2 1 刘德华 福州 3 2 S.H.E 厦门 4 2 张惠妹 厦门 |
STU_ID CLASS_ID STU_NAME STU_MEMO ------ -------- -------- -------------------- 1 1 张三 福建 2 1 刘德华 福州 3 2 S.H.E 厦门 4 2 张惠妹 厦门 |
STU_ID CLASS_ID STU_NAME STU_MEMO ------ -------- -------- ------------------ 1 1 张三 福建 2 1 刘德华 福州 3 2 S.H.E 厦门 4 2 张惠妹 厦门 4 2 张惠妹 厦门 |
STU_ID CLASS_ID STU_NAME STU_MEMO ------ -------- -------- ------------------- 1 1 张三 福建 2 1 刘德华 福州 3 2 S.H.E 厦门 4 2 张惠妹 厦门 SQL> |
2)、事务级(Commit之后就删除数据):本例子将采用以下的数据:
insert into classes(Class_id,Class_Name,Class_Memo) values(1,''计算机'',''9608''); insert into classes(Class_id,Class_Name,Class_Memo) values(2,''经济信息'',''9602''); insert into classes(Class_id,Class_Name,Class_Memo) values(3,''经济信息'',''9603''); |
在一个SESSION中(比如SQLPLUS登陆)插入上面3条记录,然后再以另外一个SESSION(用SQLPLUS再登陆一次)登陆,当你 select * from classes;的时候,classes表是空的,而你再第一次登陆的SQLPLUS中select的时候可以查询到,这个时候你没有进行commit或者rollback之前你可以对刚才插入的3条记录进行update、delete等操作,当你进行commit或者rollback的时候,这个时候由于你的表是事务级的临时表,那么在插入数据的session也看不到数据了,这个时候数据就已经被截断了。
运行结果如下:
CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- ------------------- 1 计算机 9608 2 经济信息 9602 3 经济信息 SQL> delete from classes where class_id=3 ; 1 row deleted SQL> select * from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- ----------- 1 计算机 9608 2 经济信息 9602 SQL> commit; Commit complete SQL> select *from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- ------------- SQL> 再重复插入一次,然后rollback。 SQL> Rollback ; Rollback complete SQL> select * from classes ; CLASS_ID CLASS_NAME CLASS_MEMO -------- ---------- ----------- SQL> |
4、临时表的应用
1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。
2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。
5、注意事项:
1)、临时表的索引以及对表的修改、删除等和正常的表是一致的。
2)、Oracle的临时表是Oracle8i才支持的功能特性,如果你的Oracle版本比较低的话,那么就可能没有办法用到了,如果你的Oracle 版本是8i的话,你还需要把$ORACLE_HOME/admin/${ORACLE_SID}/pfile目录下的init< ORACLE_SID>.ora初始参数配置文件的compatible修改为compatible = "8.1.0",我的服务器上就是这样子配置的。当然也可以修改为compatible = "8.1.6"
以上是我在对大表进行优化的时候采用的一些手段,效果显著。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者