ORACLE、DB2临时表简介

ORACLE

ORACLE临时表有两种类型:会话级的临时表和事务级的临时表。
1)
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE <TABLE_NAME>;
它是临时表的默认参数,这种类型的临时表与事务有关,当进行事务提交或者事务回滚的时候,临时表的数据将自行截断,即当COMMIT或ROLLBACK时,临时表的暂时段将被自动截断(TRUNCATE),但是临时表的结构以及元数据还存储在用户的数据字典中。如果临时表完成它的使命后,最好删除临时表,否则数据库会残留临时表的表结构和元数据。
2)
CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
ON COMMIT PRESERVE ROWS;
它表示临时表的内容可以跨事物而存在,当前SESSION不退出的情况下,临时表中的数据会一直存在,临时表的数据只有在当前SESSION退出的时候才被截断(TRUNCATE TABLE)。但是临时表的结构以及元数据还存储在用户的数据字典中。
3)临时表只对当前会话或事务可见。每个会话只能查看和修改自己的数据。

注意事项:

1)临时表可以创建临时的索引、视图、触发器。
2)如果要DROP会话级别的临时表,并且临时表中包含数据时,必须先截断其中的数据,否则会报错。
 > TRUNCATE TABLE TMP_TEST;
 > DROP TABLE TMP_TEST PURGE;
在ORACLE中,应用程序需要的临时表应该在程序安装时创建,而不是在程序运行时创建。(这是与ms sqlserver或sybase的使用的不同)
临时表在数据库中只需创建一次,不必在每个存储过程中创建一次。临时表总是存在的,除非手动的删除它。临时表作为对象存在数据字典中,并且总是保持为空,直到有会话在其中放入数据。

DB2

可使用 DECLARE GLOBAL TEMPORARY TABLE 语句来定义临时表。
定义了临时表后,我们可以像使用普通表一样使用临时表。临时表只对定义它的用户有效,不同用户可以在同一时间定义同名的临时表,他们之间互不影响。临时表的生命周期是当前SESSION,当SESSION关闭时,临时表将自动删除,这也是临时表的模式名只能为SESSION的原因。此外,我们还可以给临时表定义索引。

可以通过以下三种方式定义临时表:

--方法1: 
DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP (<column specification>)
ON COMMIT DELETE ROWS;   
--方法2: 
DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP 
LIKE STUDENTTABLEINCLUDING COLUMN DEFAULTS 
WITH REPLACE 
ON COMMIT PRESERVE ROWS; 
--方法3: 
DECLARE GLOBAL TEMPORARY TABLE SESSION.EMP AS 

   SELECT * FROM STUDENTTABLE WHERE<condition> 

DEFINITION ONLY WITH REPLACE;  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值