对付 sqlserver 数据库,临时表有两种类型:本地表和全局表。本地临时表只对付创建者是可见的。当用户与 SQL Server 实例断开连接后,将删除本地临时表。全局临时表在创建后对任何用户和任何连接都是可见的,当引用该表的所有用户都与 SQL Server 实例断开连接后,将删除全局临时表。
本地临时表的名称前面有一个编号符 (#table_name) ,而全局临时表的名称前面有两个编号符 (##table_name) 。
临时表定义:

CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )
1.2 用法
临时表分为 SESSION 、 TRANSACTION 两种, SESSION 级的临时表数据在全体 SESSION 都存在,直到结束这次 SESSION ;而 TRANSACTION 级的临时表数据在 TRANACTION 结束后消逝,即 COMMIT /ROLLBACK 或结束 SESSION 都会打消 TRANACTION 临时表数据。
两种临时表的语法:
create global temporary table 临时表名 on commit preserve|delete rows 用 preserve 时便是 SESSION 级的临时表,用 delete 便是 TRANSACTION 级的临时表
一、 SESSION 级临时表
1 、建立临时表
Sql 代码
create global temporary table temp_tbl(col_a varchar2(30))on commit preserve rows
2 、插入数据
insert into temp_tbl values('test session table of datahouse')
3 、提交
commit;
4 、查询数据
select from temp_tbl
可以看到数据 'test session table' 记录还在。
结束 SESSION ,重新登录,再查询数据 select from temp_tbl ,这时候记录已不存在,由于系统在结束 SESSION 时自动打消记录
二、 TRANSACTION 级临时表
1 、建立临时表
create global temporary table temp_tbl(col_a varchar2(30))on commit delete rows
2 、插入数据
insert into temp_tbl values('test transaction table')
3 、提交
commit;
4 、查询数据
select from temp_tbl
这时候可以看到刚才插入的记录 'test transaction table' 已不存在了;同样,如果不提交而直接结束 SESSION ,重新登录记录也不存在