java中db2临时表的运用
- 创建DB2临时表命令:Declare Global Temporary Table(如下), 并且需要创建在用户临时表空间上;
declare global temporary table TMP( aaaa varchar(20) not null, bbbb bigint not null, cccc varchar(32) not null
)
on commit preserve rows
not logged
-
DB2在数据库创建临时表时, 并不创建临时表空间, 如果需要使用临时表, 则需要用户在创建临时表之前创建用户临时表空间;
-
临时表的模式为SESSION(会话临时表),且在会话之间是隔离的。当会话结束时,临时表的数据被删除。对临时表的定义不会在SYSCAT.TABLES中出现 .
-
在Commit命令执行时, DB2临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制;
-
运行ROLLBACK命令时, 用户临时表将被删除;
上例创建临时表时使用【ON COMMIT PRESERVE ROWS】语法,该语法表示了数据在COMMIT之后临时表的一种状态。当会话终止时,表行和临时表描述均会被删除。 有如下选项,可控制commit后临时表的状态:
ON COMMIT PRESERVE ROWS
- 在执行COMMIT操作时,当提交数据之后(COMMIT)、关闭事务之前(close) 或手动执行DELETE或TRUNCATE之前,临时表中的数据一直存在,并且只有当前会话可以看到,其他会话看不到。
- 在执行 ROLLBACK(或 ROLLBACK to SAVEPOINT)操作时,保留表中的所有行。
ON COMMIT DELETE ROWS
- 在执行 COMMIT 操作时,如果表上没有打开游标,这时就会删除表中的所有行。
- 在执行 ROLLBACK(或 ROLLBACK to SAVEPOINT)操作时,语句指定所创建的临时表是事务级临时表,当提交数据之前(commit)或ROLLBACK之前,这些数据一直存在,当事务提交之后,表中数据自动清除。(默认设置)
注意:
1、一个会话(SESSION)可以包含多个事务
2、以上所说commit操作是指数据提交并不是指事务关闭;
close() 是指事务关闭
在此跟大家分享一下 DB2 基本表与 DB2 临时表之间的重要差别
DB2 基本表与 DB2 临时表之间的重要差别
以上