■ Oracle
1. 特点
1-1. 不同 sessiion 使用同一个表结构
1-2. 不同 session 间数据不共享
1-3. 10g 以后支持 LOB, 其他版本 ???
1-4. 临时表可以创建主键, 但不能创建外键, 其他普通表或临时表都不能参照临时表的主键来创建外键
1-5. 默认 on commit delete rows
1-6. 临时表存储在 schema 指定的临时表空间中
1-7. global 于 local 关键字意义没有区别, 都是 global 的意思
1-8. 临时表数据若非特殊指定, 存储在用户的默认临时表空间中
2. 创建
2-1. session 级别
session 中保持数据, session 断开后被 trancate
create global temporary table temp_sess_tbl (id number, name varchar2(10)) on commit preserve rows;
create global temporary table
temp_sess_tbl on commit preserve rows as select * from dba_objects;
2-2. transaction 级别
transaction 中保持数据, transaction commit 或 rollback 后被 trancate
create global temporary table temp_tran_tbl (id number, name varchar2(10)) on commit delete rows;
3. 查询临时表存储位置
select tablespace_name, total_extents, total_blocks, used_extents, added_extents from v$sort_segment;
================================================================================
■ PostgreSQL
1. 特点
1-1. 不同 session 间表结构不共享, 每个 session 需要独自创建, 每个 session 可以创建同名临时表
1-2. global 于 local 关键字意义没有区别, 都是 local 的意思
1-3. 默认 on commit preserve rows
1-4. 支持 LOB
1-5. 临时表之间支持主外键关系, 普通表与临时表之间不支持
1-6. 支持 on commit drop
1-7. session 切断后, 临时表被删除
2. 创建
2-1. commit 或 rollback 后, 数据被删除
create global temporary table temp_sess_tbl (id number, name text) on commit delete rows;
2-2. 整个 session 中保持数据
create global temporary table temp_sess_tbl (id number, name text) on commit preserve rows;
2-3. commit 或 rollback 后, 表被删除
create global temporary table temp_sess_tbl (id number, name text) on commit drop;
================================================================================
0 件のコメント:
コメントを投稿