关系型数据库几乎都有临时表的概念,一般语法为CREATE TEMP/TEMPORARY TABLE …,Trafodion自然也有临时表,其语法为CREATE VOLATILE TABLE …。关于详细的Trafodion建表语句,可参考官方文档: http://trafodion.incubator.apache.org/docs/sql_reference/index.html#create_table_statement
本文在此简单介绍Trafodion临时表的相关事项,仅供参照~
1 语法
CREATE VOLATILE TABLE ...
2 定义
指定一个可变表,该表仅存在于创建表会话期间。会话结束时,该表自动删除。
3 例子(在Session1创建的临时表,在Session2中不存在)
--Session 1
SQL>create volatile table temp_table ( a int, b char(10));
--- SQL operation complete.
SQL>insert into temp_table values(1,'ABC');
--- 1 row(s) inserted.
SQL>select * from temp_table;
A B
----------- ----------
1 ABC
--- 1 row(s) selected.
SQL>showddl temp_table;
CREATE VOLATILE TABLE TEMP_TABLE
(
A INT DEFAULT NULL NOT SERIALIZED
, B CHAR(10) CHARACTER SET ISO88591 COLLATE
DEFAULT DEFAULT NULL NOT SERIALIZED
)
STORE BY (A ASC)
ATTRIBUTES ALIGNED FORMAT
;
--- SQL operation complete.
SQL>exit
--Session 2
SQL>select * from temp_table;
*** ERROR[4082] Object TRAFODION.SEABASE.TEMP_TABLE does not exist or is inaccessible. [2017-02-09 10:48:29]
4 注意事项
(1)临时表与会话紧密相联,且在多个并发会话中唯一,因此多个会话可以同时使用相同的临时表名。
(2)临时表支持创建索引。
(3)临时表由系统进行分区,默认值是4个分区。
(4)临时表统计信息不会自动更新,需要手动更新。
(5)不支持ALTER,创建视图,User约束。