1. GaussDB临时表概述
在GaussDB数据库系统中,临时表(Temporary Table)是一种特殊类型的数据库对象,其生命周期仅限于当前会话或事务。与普通表不同,临时表的数据不会持久化存储,当会话结束或事务完成时,系统会自动清理临时表及其数据。这种特性使临时表成为处理中间结果的理想选择,特别是在需要暂存大量计算中间数据的场景下。
临时表在GaussDB中主要分为两种类型:本地临时表(Local Temporary Table)和全局临时表(Global Temporary Table)。本地临时表仅在创建它的会话中可见,而全局临时表的结构可以被多个会话共享,但每个会话只能看到自己插入的数据。这种设计既保证了数据隔离性,又避免了重复创建表结构的开销。
注意:在分布式部署的GaussDB环境中,全局临时表在CN(协调节点)上的查询结果可能不具有参考价值,DN(数据节点)上查询结果可能为空,因此华为云官方文档明确建议避免在分布式环境中使用全局临时表。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 临时表的创建语法与参数解析
2.1 基本创建语法
在GaussDB中创建临时表的语法与创建普通表类似,但需要添加TEMPORARY或TEMP关键字。以下是创建临时表的标准语法:
sql复制CREATE [GLOBAL] TEMPORARY TABLE table_name (
column1 datatype [column_constraint],
column2 datatype [column_constraint],
...
[table_constraint]
) [ON COMMIT {PRESERVE ROWS | DELETE ROWS | DROP}];
关键参数说明:
GLOBAL:指定创建全局临时表,省略则创建本地临时表TEMPORARY或TEMP:声明表为临时表ON COMMIT:控制事务结束时的行为:PRESERVE ROWS(默认):事务结束后保留数据DELETE ROWS:事务结束后清空数据但保留表结构DROP:事务结束后删除整个临时表
2.2 本地临时表示例
创建一个仅在当前会话可见的本地临时表,用于存储用
