表
临时表:临时表让用户只能够操作各自的数据而互不干扰,其中有会话临时表(SESSION)和事务临时表(TRANSACTION)会话临时表(SESSION)是在用户登录后,往表中插入数据,进行查询会获得数据;当重新登录再查询数据没有了;
事务临时表(TRANSACTION)是在用户进行commit和rollback后数据消失,可以设置数据库隔离级别可以进行查看到没有commit之前的数据;
1、建立会话临时表
create global temporary table temp_tbl(col_a varchar2(30))
on commit preserve rows
2、插入数据
insert into temp_tbl values('test session table')
3、提交
commit;
4、查询数据
select * from temp_tbl;
1、建立事务临时表
create global temporary table temp_tbls(col_a varchar2(30)) on commit delete rows;
2、插入数据
insert into temp_tbls values('test transaction table');
3、提交
commit;
4、查询数据
select * from temp_tbls;
创建临时表
--临时表不能创建blob字段,临时表不能永久存储数据,临时表的数据不会备份,恢复,对其的修改也不会有任何日志信息,
--临时表可以创建临时的索引、视图、触发器;
--如果要DROP会话级别临时表,并且其中包含数据时,必须先截断其中的数据。否则会报错。
--如果有大量数据进行操作,比如说报表统计,
--统计上万条数据然后导入excel中,可以将符合的数据插入到临时表中然后将临时表中的数据赋值给游标,通过存储过程返回游标
--或者购物车,每个加入购物车可以先将物品放到临时表,当下单时再插入非临时表,减轻数据库压力
--临时表分为两种
--一种为会话级别临时表(本临时表在一次会话起作用)
--当前SESSION不退出的情况下,临时表中的数据就还存在,临时表的数据只有当你退出当前SESSION的时候才被截断(TRUNCATE TABLE)
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> )
ON COMMIT PRESERVE ROWS;
--事务级别临时表(本临时表在一次事务中起作用)
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> )
ON COMMIT DELETE ROWS;
--创建会话临时表
create global temporary table tableA(
id varchar2(20)
)on commit preserve rows;
insert into tableA values('1');
--只能在本次,本会话中查询到
select * from tableA;
--创建事务临时表
CREATE GLOBAL TEMPORARY table tableB
(ID VARCHAR2(20))
ON COMMIT DELETE ROWS;
INSERT INTO TABLEB values('1');
--只能在本session中的本次事务没有提交的情况下查询到
select * from TABLEB;