是否有办法只通过数据库链接提交在表上插入/更新的数据,不当前会话的数据?或者他们被认为是同一个?
例如:
INSERT INTO main_database.main_table(value1, value2)
VALUES (1 , 2)
INSERT INTO database.table@database_link(value3, value4)
VALUES (3 , 4)
只为数据库链接表做提交吗?
我想要这样做的背景: 主数据库用于(多个)记录,而数据库链接用于(货币)事务(在单独的服务器上处理)。我想首先更新记录以检查是否有任何约束失败,但是在事务完成之前不提交数据。如果事务失败,我想回滚记录以省去删除/撤消插入/更新的工作,这可能会变得混乱。
我假设没有,但我希望有办法。提前谢谢。
答案 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 ....没有什么不同;承诺;插入...