首页 > 代码库 > oracle 中的临时表

oracle 中的临时表

临时表:

除了永久表,oracle还可以建立临时表来保存 session私有的data,这些data只存在于一个事务或者session的持续存在的期间内。


CREATE GLOBAL TEMPORARY TABLE  语句建立了一个临时表,该临时表可以是事务级别,也可以是session级别。 对于事务级别的临时表,data存在于事务的持续期间。对于session级别的临时,data存在于session的持续期间。临时表中的data 对各自的session的是私有的。每个session 只能看到并且只能修改它自己的data。dml lock 对于 临时表上的data是不需要的。lock 语句对临时表没有作用,因为每个session都有他自己的私有data。


对于在 session级别的临时表发出truncate命令,会truncate掉属于那个session的data。truncate命令不会truncate掉 使用相同表名的其他的session的数据。

临时表上的dml语句不会生成redo。但是,undo logs for the data and redo logs for the undo logs 是生成的。在session终止(user logs off 或者 session 异常终止)时,临时表中的数据会自动drop掉。

可以在临时表上使用create index语句建立索引。建立在临时表上的索引也是临时的,索引中的data 与 临时表中的data 有相同的 session 或者 事务范围。

可以建立访问临时表和永久表的view。也可以在临时表上建立触发器。

oracle 实用工具(注:exp等)可以导出和导入 临时表的定义,但是,即使你使用rows子句,临时表中的data rows也是不会被导出的。类似的,你可以复制临时表的定义,但是不能复制表中的data。