|
请Black-L大哥帮忙~!
IQ如何在存储过程中实现对远程代理表进行事务控制?当前我的存储过程:
CREATE PROCEDURE "query"."sp_test"()
begin atomic
insert into proxy_test select * from qry_test;
update qry_test set enterflag='1' where enterflag='0';
insert into qry_test values('0,0');
end
其中proxy_test为代理表,代理远程ASE上的同名表,第5行的insert语
句为错误语句,当IQ报错后,第4回滚,第3行没回滚;
将第3、第4两行调换后执行,也是报类似的结果,就是本地IQ表上的操作可以回
滚,而远程代理表不能回滚。
有办法可以将远程ASE代理表的操作一起回滚吗?
查了一下手册,ASE不支持atomic属性。
那么我将存储过程修改如下:
ALTER PROCEDURE "query"."sp_test"()
begin
insert into proxy_test select * from qry_test where
enterflag='0';
update qry_test set enterflag='1' where enterflag='0';
insert into qry_test values('0,0');
exception
when others then
rollback;
end
采用异常捕捉,回滚,因为atomic参数不允许有rollback操作,所以我也没有设置原
子操作。
这样简单地测试了一下,结果是达到了预期。不知道这样是否可行?
[ 本帖最后由 zq5143 于 2010-5-14 16:08 编辑 ] |
|