ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 变异表问题

变异表问题

原创 Linux操作系统 作者:likesky276 时间:2007-03-02 00:00:00 0 删除 编辑

有个需求,需要在基于A表的行级TRIGGER中更新B表某字段前先检查A表其他记录数,这会遇到变异表问题,由于更新A后又会触发更新B表,就在B表中执行上面的检查操作,结果发现多数情况可以执行过去,但少部分情况还是会有变异表问题发生,但重新操作又可以过,看起来这种方式有不确定性。环境为10g的DB.

解决的方法

1、按TOM提供的方式,在包中加公共变量,然后用表级trigger获取值,在行级trigger判断

2、用自治事务隔离操作。本例中采用后者较简单。在B表的行级before update中写一自治事务函数:

IF ... THEN
DECLARE
FUNCTION get_max_date(p_branch_no2 VARCHAR2) RETURN VARCHAR2 IS
PRAGMA AUTONOMOUS_TRANSACTION;
v_end_date varchar2

BEGIN

......

IF ... THEN
RETURN(v_end_date);
ELSE
RETURN(p_end_date);
END IF;
END;
BEGIN
:NEW.end_date := get_max_date(:NEW.branch_no2);
END;
END IF;


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8118583/viewspace-64851/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 剪贴板乱码问题
请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    55
  • 访问量
    98566