临时表的概念: 在Oracle数据库中还有一种类型的表,叫做临时表。这个临时表跟永久表最大的区别就是表中的数据不会永远的存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自己删除,数据库自己会自动清除。(表是全局,只是数据消失)
Oracle数据库根据临时表的性质不同,可以分为事务临时表与会话临时表。事务临时表是指数据只有在当前事务内有效。一般情况下,如果在创建数据表的时候,没有特殊指明这表是会话临时表的话,则该表默认为事务临时表。
事务临时表:
Create global temporary table Temp_user
(ID NUMBER(12) Primary key,name varchar2(10)) ON COMMIT DELETE ROWS ;
会话临时表:
CREATE GLOBAL TEMPOPARY TABLE TEMP_USER
(ID NUMBER(12) Primary key,name varchar2(10))
ON COMMIT PRESERVE ROWS ;
也就是说,会话临时表跟事务临时表的创建语法大致相同,只有最后的关键字有区别 。不过两个表虽然类似,但是其内部的处理机制还是有比较大的区别。
区别:事务临时表,在提交事务后,表中的数据就消失了,但是会话临时表不会!~
会话临时表,提交事务后,依旧能查询,但是关闭数据后,重新连接时,表中的数据才会消失!~
从以上的分析我们可以看中,会话临时表与事务临时表主要的差异就在于删除数据时机的不同。事务性临时表是在事务提交的时候清除数据,而会话性临时表则是在关闭当前会话的时候清除临时表。只要当前会话没有关闭,即使事务完成了,会话临时表中的数据仍然存在,不会被清除。