Oracle PLSQL - 仅提交数据库链接

时间:2016-04-11 21:59:49

标签: oracle plsql

是否有办法只通过数据库链接提交在表上插入/更新的数据,当前会话的数据?或者他们被认为是同一个?

例如:

INSERT INTO main_database.main_table(value1, value2)
VALUES (1 , 2)

INSERT INTO database.table@database_link(value3, value4)
VALUES (3 , 4)

只为数据库链接表做提交吗?

我想要这样做的背景: 主数据库用于(多个)记录,而数据库链接用于(货币)事务(在单独的服务器上处理)。我想首先更新记录以检查是否有任何约束失败,但是在事务完成之前不提交数据。如果事务失败,我想回滚记录以省去删除/撤消插入/更新的工作,这可能会变得混乱。

我假设没有,但我希望有办法。提前谢谢。

2 个答案:

答案 0 :(得分:1)

create or replace procedure proc_1 ( i IN number )
as
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    INSERT INTO test_table@remote_sid (id, description)
    VALUES (i, 'Description for ' || i);
  COMMIT;
END;
/

create or replace procedure proc_base ( i IN number )
as
begin
  insert into local_tab (id) values (i);
  proc_1( i );
  rollback;
end;
/

答案 1 :(得分:0)

没有

如果插入在pl / SQL中,那么你可以在自治事务中运行第一个插入,但是没有其他功能与insert ....没有什么不同;承诺;插入...