也许我要求的是不可能的事,但我还是要问。
是否有一种简单的方法可以从一个Oracle
会话中进行选择,然后将insert
/commit
切换到另一个会话?
(我想,从技术上讲,可以使用pl/sql
过程调用和PRAGMA AUTONOMUS Transactions
来完成,但这会很麻烦)
我有下面的场景:
我运行了一些繁重的计算和update
/insert into
一些表。在这个过程完成后,我想"备份"结果(create table as select
或insert into
另一个临时表),然后rollback
我的当前会话,而不会丢失备份。
以下是期望/预期行为:
- Oracle 11g**
insert into TableA (A,B,C) values (1,2,3);
select * from TableA
Result: 1,2,3
create table [in another session] TempA
as select * from TableA [in this session];
rollback;
select * from TableA;
Result null
select * from TempA;
Result 1,2,3
这可能吗?
2条答案
按热度按时间cgvd09ve1#
是否有一种简单的方法可以从一个Oracle会话中进行选择,然后将
insert
/commit
切换到另一个会话?用第三方语言(C++、Java、PHP等)创建一个程序,打开两个到数据库的连接;无论您是以不同用户身份连接还是以同一用户身份连接,它们都将具有不同的会话。2从一个连接读取并写入另一个连接。
thigvfpy2#
您可以将“繁重的计算”插入Oracle临时表中。
诀窍在于当你提交事务时,所有的行都从临时表中删除。
然后,首先将数据插入临时表,将结果复制到备份表,然后提交事务。