可以使用以下任一 SQL 语句创建临时表:
- CREATE TABLE 语句的 TEMP TABLE 选项
- SELECT 语句的 INTO TEMP 子句,例如 SELECT * FROM customer
INTO TEMP cust_temp
只有创建了临时表的会话才可以使用该表。
当会话退出时,该表将自动删除。
当您创建临时表时,数据库服务器将使用下列条件:
- 如果用于填充 TEMP 表的查询未产生任何行,那么数据库服务器将创建一个空的且未分段的表。
- 如果查询生成的行未超过 8 KB,那么临时表将只位于一个数据库空间中。
- 如果生成的行超过 8 KB,那么数据库服务器会创建多个分段并使用循环分段存储方案进行填充,除非您为该表指定了分段存储方法和位置。
如果使用 CREATE TEMP 和 SELECT...INTO TEMP SQL 语句并且 DBSPACETEMP 已被设置:
- 列表中的 LOGGING 数据库空间被用来创建指定或暗示 WITH LOG 子句的表。
- 列表中的 NON-LOGGING 临时数据库空间被用来创建指定 WITH NO LOG 子句的表。
当使用了 CREATE TEMP 和 SELECT...INTO TEMP SQL 语句,并且 DBSPACETEMP 还未设置或不包含正确类型的数据库空间时,GBase 8s 会使用数据库的数据库空间来存储临时表。请参阅《GBase 8s SQL 指南:语法》以获取更多信息。