zoukankan      html  css  js  c++  java
  • 【PostgreSQL-9.6.3】临时表

    PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中,在事务级临时表中的数据只能存在于事务的生命周期中。
    1. 会话级临时表

    ##创建会话级临时表,PG中默认创建的就是会话级的。
    test=# create TEMPORARY table tmp1 (id int primary key,note text);
    CREATE TABLE
    
    ##查看表属性,schema为“pg_temp_x”,其中“x”代表一个数字,不同的session这个数字不同。
    test=# d
              List of relations
      Schema | Name | Type | Owner 
    -----------+------+-------+----------
     pg_temp_3 | tmp1 | table | postgres
    (1 row)
    
    ##退出会话
    test=# q
    
    ##重新登录会话
    [postgres@drz bin]$ psql test;
    psql (8.4.18, server 9.6.3)
    WARNING: psql version 8.4, server version 9.6.
             Some psql features might not work.
    Type "help" for help.
    
    ##再次查看,临时表已经消失
    test=# d
    No relations found.

    2. 事务级临时表
    在创建事务级临时表语句中需要加上"on commit delete rows"子句。

    ##创建事务级临时表
    test=# create TEMPORARY table tmp2 (id int primary key,note text) on commit delete rows;
    CREATE TABLE
    
    ##开始一个事务
    test=# begin;
    BEGIN
    
    ##插入测试数据
    test=# insert into tmp2 values (1,'Tom');
    INSERT 0 1
    test=# insert into tmp2 values (2,'Peter');
    INSERT 0 1
    
    ##查看表中数据
    test=# select * from tmp2;
     id | note 
    ----+-------
      1 | Tom
      2 | Peter
    (2 rows)
    
    ##结束事务
    test=# end;
    COMMIT
    
    ##再次查看,表中数据已经消失,因为事务级临时表中数据只存在于事务的生命周期中
    test=# select * from tmp2;
     id | note 
    ----+------
    (0 rows)

    总结:
    1. 不管是会话级还是事务级的临时表,当会话结束后,临时表会消失,这和Oracle数据库不同。Oracle数据库当会话结束后,数据消失,而表依然存在。
    2. "ON COMMIT" 子句有三种形式,默认使用的是PRESERVE ROWS:
    (1)ON COMMIT PRESERVE ROWS 表示临时表的数据在事务结束后保留;
    (2)ON COMMIT DELETE ROWS 表示临时表的数据在事务结束后truncate掉;
    (3)ON COMMIT DROP 表示临时表在事务结束后删除。

    The End!

    2017-08-15

  • 相关阅读:
    Hibernate ManyToOne Mappings 多对一关联映射
    CF860E Arkady and a Nobody-men
    23种设计模式(23):代理模式
    23种设计模式(22):享元模式
    23种设计模式(21):外观模式
    23种设计模式(20):装饰模式
    23种设计模式(19):组合模式
    23种设计模式(18):桥接模式
    23种设计模式(17):适配器模式
    23种设计模式(16):状态模式
  • 原文地址:https://www.cnblogs.com/NextAction/p/7365861.html
Copyright © 2011-2022 走看看