1、查看现在数据库的临时表空间
可以看到,临时表空间中,只有一个页,即32k大小;但是,是sms类型,会自动扩展;
2、在系统临时表空间创建一张临时表:
系统的临时表空间,不允许建立临时表
没成功;
3、创建一个用户临时表空间:
查看建立结果:
通过对比可以发现,同样是临时表空间,但是手动建立的临时表空间时dms类型的;
而且,发现,如果不指明是用户临时表空间的话,建立的就是系统临时表空间;系统临时表空间不允许建立临时表:
重新建立用户临时表空间
删除手动建立的系统临时表空间tbs_temp:
查看删除结果:
查看操作系统文件:
建立用户临时表空间:
查看建立结果:
3、在自己建立的临时表空间tbs_temp上建立临时表:
由此可见,建立成功;
4、临时表不会被syscat编目表空间记录:
5、使用临时表进行操作
V9.5时,DB2的临时表是基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现;且只能使用declare进行临时表的声明;
V9.7后,像创建普通表一样创建临时表,然后可以直接在存储过程里面使用该临时表,Oracle中的临时表和其他数据库的临时表是相似的,在每个数据库中创建临时表一次,不必在数据库中的每个存储过程中创建一次。临时表总是存在的,他们作为对象存在于数据字典中,并且总是保持为空,直到有会话在其中放入数据。如果不手动Drop 表,临时表还是在数据字典中存在的。(IBM的db2 v9.7现在也是朝这个方向发展的即CGTT)。
6、V9.1时很多临时表是正式表的原因
因为,进行数据处理的表,其定义需要一直存在(V9.7之前,DB2不支持),所以,不能用真正的基于session的临时表。
阅读(2918) | 评论(0) | 转发(0) |