有没有办法只提交通过数据库链接在表上插入/更新的数据,而不提交当前会话的数据?还是它们被认为是一体的?
例如:
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中,那么您可以在自治事务中运行第一个插入,但在没有其他与插入几乎不同的功能的情况下。。。。;犯罪插入