2016-04-11 32 views
0

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

例如:

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

INSERT INTO [email protected]_link(value3, value4) 
VALUES (3 , 4) 

而且做只有数据库链接表提交?

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

我假设没有,但我希望有一种方法。提前致谢。

+0

什么是上下文?您可以在两个语句之间创建一个保存点,回滚到保存点,然后提交。但是,这假设在第一个陈述之前没有未提交的陈述,并且你可以整齐地分离两部分工作。另外,如果你知道你总是想要提交远程更改,那么在第一条语句之后发布一个显式提交会更有意义。 –

+0

基本上,答案是否定的。但我很难理解你想要做什么。你能给我们多一点信息吗? –

+0

我已更新我的问题。 – Mocking

回答

1
create or replace procedure proc_1 (i IN number) 
as 
    PRAGMA AUTONOMOUS_TRANSACTION; 
BEGIN 
    INSERT INTO [email protected]_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; 
/
+0

这对我有用。谢谢一堆。 – Mocking

0

如果插入是在PL/SQL,那么你可以运行在一个自治事务第一次插入,但在没有其他功能,这比插入有点不同......;承诺;插入...

+0

我很抱歉,这是PLSQL。你能举一个自主交易的例子吗? – Mocking

+0

我在下面发布了一个示例pl/sql,它可能适合你,试试吧 –