暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

金仓数据库KingbaseES 参数 - ora_statement_level_rollback

数据猿 2022-12-19
332

参数 ora_statement_level_rollback 控制KingbaseES 是否实现类似oracle 语句级的回滚。当该参数打开时,如果事务操作失败,仅会回滚最后一条操作,避免了全部操作的回滚。以下举例展示差异。

create table t1(id integer);



create or replace procedure p1 is

begin

    insert into t1 values(1);

    insert into t1 values('a');

exception when others then

    null;

end;



create or replace procedure p2 is

begin

    insert into t1 values(1);

    begin

        insert into t1 values('a');

    exception when others then

        null;

    end;

end;

注意:例子有进行exception 捕获,如果没有exception 捕获,则不管是oracle ,还是 kingbaseES,这所有操作都回退。

1、Oracle 结果

仅回滚第二条insert 失败的操作。

SQL> truncate table t1;



Table truncated.



SQL> call p1();



Call completed.



SQL> select * from t1;



        ID

----------

         1

2、KingbaseES

当 ora_statement_level_rollback = on时,结果与oracle 相同,只回退最后一个操作。

test=# truncate table t1;

TRUNCATE TABLE

test=# call p1();

CALL

test=# select * from t1;

 id

----

  1

(1 row)

以上例子,p1 , p2 过程执行结果在oracle ,KingbaseES 执行结果相同。

注意:ora_statement_level_rollback 目前仅能支持过程块内语句级回滚,不支持非块内语句级的回滚。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论