中易网

oracle临时表有几种

答案:3  悬赏:40  
解决时间 2021-12-30 19:43
oracle临时表有几种
最佳答案
ON COMMIT DELETE ROWS 和 ON COMMIT PRESERVE ROWS

Creation of Global Temporary Tables
The data in a global temporary table is private, such that data inserted by a session can only be accessed by that session. The session-specific rows in a global temporary table can be preserved for the whole session, or just for the current transaction. The ON COMMIT DELETE ROWS clause indicates that the data should be deleted at the end of the transaction.
CREATE GLOBAL TEMPORARY TABLE my_temp_table (
column1 NUMBER,
column2 NUMBER
) ON COMMIT DELETE ROWS;

In contrast, the ON COMMIT PRESERVE ROWS clause indicates that rows should be preserved until the end of the session.
CREATE GLOBAL TEMPORARY TABLE my_temp_table (
column1 NUMBER,
column2 NUMBER
) ON COMMIT PRESERVE ROWS;
全部回答
2种: 基于会话 基于事务 SQL> -- 基于会话的临时表. SQL> CREATE GLOBAL TEMPORARY TABLE temp_table_session (   2      id      INT,   3      value   VARCHAr(10)   4  ) ON COMMIT PRESERVE ROWS; Table created. SQL> SQL> -- 基于事务的临时表. SQL> CREATE GLOBAL TEMPORARY TABLE temp_table_transaction (   2      id      INT,   3      value   VARCHAr(10)   4  ) ON COMMIT DELETE ROWS; Table created. 对于基于事务的临时表,commit以后,临时表中的数据被清空。 对于基于会话的临时表,断开连接后,临时表中的数据被清空。 SQL> INSERT INTO temp_table_session(id, value) VALUES (1, 'ONE'); 1 row created. SQL> INSERT INTO temp_table_transaction(id, value) VALUES (1, 'ONE'); 1 row created. SQL> SQL> SELECT COUNT(1) FROM temp_table_session;   COUNT(1) ----------          1 SQL> SELECt COUNT(1) FROM temp_table_transaction;   COUNT(1) ----------          1 SQL> commit; Commit complete. SQL> SELECt COUNT(1) FROM temp_table_session;   COUNT(1) ----------          1 SQL> SELECt COUNT(1) FROM temp_table_transaction;   COUNT(1) ----------          0 临时表在事前先创建好 会话/存储过程中,只作INSERT/SELECT操作 避免在存储过程中,创建临时表 临时表数据,仅仅当前会话能够检索到,会话一的数据,在会话二那里,无法检索到,只能检索到表结构。 Oracle 不会在会话结束后,删除临时表。
Oracle 临时表:在 Oracle 中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了。 Oracle 的临时表创建之后基本不占用表空间,如果你没有指定临时表(包括临时表的索引)存放的表空的时候,你插入到临时表的数据是存放在 ORACLE 系统的临时表空间中( TEMP )。 1 、临时表的创建 创建Oracle 临时表,可以有两种类型的临时表: 会话级的临时表 事务级的临时表 。 1) 会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前SESSION 不退出的情况下,临时表中的数据就还存在,而当你退出当前SESSION 的时候,临时表中的数据就全部没有了,当然这个时候你如果以另外一个SESSION 登陆的时候是看不到另外一个SESSION 中插入到临时表中的数据的。即两个不同的SESSION 所插入的数据是互不相干的。当某一个SESSION 退出之后临时表中的数据就被截断(truncate table ,即数据清空)了。会话级的临时表创建方法: Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Preserve Rows ; 举例: create global temporary table Student ( Stu_id Number(5), Class_id Number(5), Stu_Name Varchar2(8), Stu_Memo varchar2(200)) on Commit Preserve Rows ; 2) 事务级临时表是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出SESSION 的时候,事务级的临时表也会被自动截断)。事务级临时表的创建方法: Create Global Temporary Table Table_Name (Col1 Type1,Col2 Type2...) On Commit Delete Rows ; 举例: create global temporary table Classes ( Class_id Number(5), Class_Name Varchar2(8), Class_Memo varchar2(200)) on Commit delete Rows ; 3) 两中类型临时表的区别 会话级临时表采用 on commit preserve rows ;而事务级则采用 on commit delete rows ;用法上,会话级别只有当会话结束临时表中的数据才会被截断,而且事务级临时表则不管是 commit 、 rollback 或者是会话结束,临时表中的数据都将被截断 4 )什么时候使用临时表 1 )、当某一个 SQL 语句关联的表在 2 张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中 2 )、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。 2 .临时表的不足之处 1 )不支持 lob 对象,这也许是设计者基于运行效率的考虑,但实际应用中确实需要此功能时就无法使用临时表了。 2 )不支持主外键关系。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
顺德区LAConceptBasketballCenter地址在哪里
我的快手为什么缓冲好了播放不出来
滔蕩的意思是什么?滔蕩的释义是什么啊?
洪惟的意思是什么?洪惟的释义是什么啊?
三国时期两川在哪里
游赐的意思是什么啊?请解释下!
缙云山的意思是什么?缙云山的释义是什么啊?
穿高跟脚趾麻了
南裔的意思是什么?南裔的释义是什么啊?
結子的意思是什么?結子的释义是什么啊?
电脑浏览器在最小化的时候卡了中间一大片在桌
汉高的意思是什么啊?请解释下!
彫鈲的意思是什么?彫鈲的释义是什么啊?
韩公帕的意思是什么?韩公帕的释义是什么啊?
男朋友骗了我,我不想原谅他,就这样默默的分
推荐资讯
愧色的意思是什么啊?请解释下!
陆云的意思是什么?陆云的释义是什么啊?
狗官的意思是什么?狗官的释义是什么啊?
笔记本电脑360软件小助手显示资源占用99%
擢舉的意思是什么?擢舉的释义是什么啊?
深圳罗湖村乱吗????
坎巴拉太空计划怎么能让小绿人不穿太空服
国产奔驰,宝马的发动机和变速箱的问题
武汉海昌极地海洋世界三周年有什么庆祝活动?
怎样计算:l十3十5十7十......19=190
寻接近1000元的智能手机 要水货
荜门的意思是什么?荜门的释义是什么啊?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?