在oracle中临时表的种类
临时表的概念:
在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
;
也就是说,会话临时表跟事务临时表的创建语法大致相同,只有最后的关键字有区别
。不过两个表虽然类似,但是其内部的处理机制还是有比较大的区别。
区别:事务临时表,在提交事务后,表中的数据就消失了,但是会话临时表不会!~
会话临时表,提交事务后,依旧能查询,但是关闭数据后,重新连接时,表中的数据才会消失!~
从以上的分析我们可以看中,会话临时表与事务临时表主要的差异就在于删除数据时机的不同。事务性临时表是在事务提交的时候清除数据,而会话性临时表则是在关闭当前会话的时候清除临时表。只要当前会话没有关闭,即使事务完成了,会话临时表中的数据仍然存在,不会被清除。
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
SQL Server里的 ISNULL 与 Oracle 中的 NULLIF不同:
SQL Server 中有两个参数,语法:
ISNULL(check_expression, replacement_value)
check_expression 与 replacement_value 数据类型必须一致
如果 check_expression 为 NULL,则返回 replacement_v ......
很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。
实际上,这个错误的原因,主要还是代码问题引起的。
ora-01000: maximum open cursors exceeded.
表示已经达到一个进程打开的最大游标数。
这样的错误很容易出现在Java代码中的主要原因是:Java代码在执 ......
练习:
drop table Employee;
create table Employee(
id number primary key,
  ......