Oracle PLSQL-仅提交数据库链接



有没有办法只提交通过数据库链接在表上插入/更新的数据,而不提交当前会话的数据?还是它们被认为是一体的?

例如:

INSERT INTO main_database.main_table(value1, value2)
VALUES (1 , 2)
INSERT INTO database.table@database_link(value3, value4)
VALUES (3 , 4)

并且只提交数据库链接表?

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

我认为没有,但我希望有办法。提前谢谢。

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;
/

否。

如果插入在pl/SQL中,那么您可以在自治事务中运行第一个插入,但在没有其他与插入几乎不同的功能的情况下。。。。;犯罪插入

最新更新