全局临时表
功能描述
全局临时表像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据,即使其他会话提交了,也看不到。临时表不存在并发行为,因为他们对于当前会话都是独立的。
创建临时表时,Vastbase只创建了表的结构(在数据字典中定义),并没有初始化存储空间,当某一会话使用临时表时,Vastbase会从当前用户的临时表空间分配一块空间。也就是说只有向临时表中插入数据时,才会给临时表分配存储空间。
临时表分事务级临时表和会话级临时表:
事务级临时表只对当前事务有效,通过语句:ON COMMIT DELETE ROWS 指定。
会话级临时表对当前会话有效,通过语句:ON COMMIT PRESERVE ROWS语句指定。 这是不指定ON COMMIT选项的缺省行为。
示例
CREATE GLOBAL TEMP TABLE temptest(tcol int)
ON COMMIT PRESERVE ROWS;
INSERT INTO temptest VALUES (1);
update temptest set tcol=10;
SELECT * FROM temptest;
delete from temptest;
drop table temptest;