各种数据库临时表的使用区别总结

来源:未知 责任编辑:责任编辑 发表时间:2014-01-26 22:01 点击:
各种数据库临时表的使用区别总结
 
虽然SQL92, 99, 2003, 2008标准都有推出,但并不是所有商家严格按照标准行事。痛苦的是使用和应用不同数据库的DBA和开发人员。
这里以几种主流数据库为例,分别介绍一下临时表的使用:
 
1. PostgreSQL (以9.x为例)
 
使用的是比较标准的语法: 
create [global | local] temp table t ( id int primary key) on commit delete | preserve rows
其中,global和local是摆设,一样的效果。都是会话级别的。当前会话退出,表即删除。
可以创建与当前模式相同的表名,即可以创建同名的表t,drop table t时,会先删除临时表。如下例所示:
 
[sql]
<span style="font-size:16px;">iihero=# create global temp table t(id int primary key) on commit delete rows;  
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "t_pkey" for table "t"  
CREATE TABLE  
iihero=# insert into t values(1);  
INSERT 0 1</span>  
[sql]
<span style="font-size:16px;">iihero=# select * from t;  
 id  
----  
(0 rows)  
</span>  
[sql]
<span style="font-size:16px;">iihero=# begin;  
BEGIN  
iihero=# insert into t values(1);  
INSERT 0 1  
iihero=# select * from t;  
 id  
----  
  1  
(1 row)  
  
  
iihero=# commit;  
COMMIT  
iihero=# select * from t;  
 id  
----  
(0 rows)  
</span>  
 
2. DB2 9.x
1). DB2的临时表需要用命令Declare Temporary Table来创建,并且需要创建在用户临时表空间上;
2). DB2在数据库创建时,缺省并不创建用户临时表空间,如果需要使用临时表,则需要用户在创建临时表之前创建用户临时表空间;
3). 临时表的模式为SESSION,SESSION即基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现 .;
4). 缺省情况下, 在Commit命令执行时,DB2临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制;
5). 运行ROLLBACK命令时, 用户临时表将被删除;
下面是DB2临时表定义的一个示例:
DECLARE GLOBAL TEMPORARY TABLE results
    (   
        RECID     VARCHAR(32)     ,    --id
        XXLY      VARCHAR(100),        --信息来源
        LXDH      VARCHAR(32 ),        --信息来源联系电话
        FKRQ      DATE           --反馈时间
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 执行全文索引时出现权限不足的解决方法
  • 导入excel文件处理流程节点的解决方案
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • MongoDB安装为Windows服务方法与注意事项
  • Percolator与分布式事务思考(二)
  • 写给MongoDB开发者的50条建议Tip1
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1