• ORACLE的临时表


    创建ORACLE的临时表

    CREATE GLOBAL TEMPORARY TABLE TABLENAME (
    COL1 VARCHAR2(10),
    COL2 NUMBER
    ) ON COMMIT PRESERVE(DELETE) ROWS ;

    这种临时表不占用表空间,而且不同的SESSION之间互相看不到对方的数据
    在会话结束后表中的数据自动清空,如果选了DELETE ROWS,则在提交的时候即清空数据,PRESERVE则一直到会话结束

    在Oracle8i中,可以创建以下两种临时表:
    (1)会话特有的临时表
    CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
    ON COMMIT PRESERVE ROWS;

    (2)事务特有的临时表
    CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
    ON COMMIT DELETE ROWS;

    CREATE GLOBAL TEMPORARY TABLE MyTempTable
    所建的临时表虽然是存在的,但是你试一下insert 一条记录然后用别的连接登上去select,记录是空的,明白了吧,我把下面两句话再贴一下:
    --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
    --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
    冲突的问题更本不用考虑.

    临时表只是保存当前会话(session)用到的数据,数据只在事务或会话期间存在。

    通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,对于事务类型的临时表,
    数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在。

    会话的数据对于当前会话私有。每个会话只能看到并修改自己的数据。DML锁不会加到
    临时表的数据上。下面的语句控制行的存在性。

    ● ON COMMIT DELETE ROWS 表名行只是在事务期间可见

    ● ON COMMIT PRESERVE ROWS 表名行在整个会话期间可见

    可以对临时表创建索引,视图,出发器,可以用export和import工具导入导出表的
    定义,但是不能导出数据。表的定义对所有的会话可见。

    例如:

    CREATE GLOBAL TEMPORARY TABLE TEMP_TAB1(
    table_name VARCHAR2(20),
    primary_key VARCHAR2(100),
    field VARCHAR2(1000))
    ON COMMIT PRESERVE ROWS;
    CREATE GLOBAL TEMPORARY TABLE TEMP_TAB2(
    table_name VARCHAR2(20),
    primary_key VARCHAR2(100),
    field VARCHAR2(1000))
    ON COMMIT DELETE ROWS;
  • 相关阅读:
    No.20 selenium学习之路之文件读写
    No.19 selenium学习之路之os模块
    No.18 selenium学习之路之批量执行测试用例
    python进阶学习之高阶函数
    python进阶学习之匿名函数lambda
    No.17 selenium学习之路之判断与等待
    Educational Codeforces Round 83 (Rated for Div. 2)【ABCDEF】(题解)
    Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)【ABCDE】(题解)
    牛客练习赛58【ABCDEF】(题解)
    CodeCraft-20 (Div. 2)【ABCDE】(题解)
  • 原文地址:https://www.cnblogs.com/sopost/p/2849441.html
Copyright © 2020-2023  润新知