有个过程
先获取日期表中记录的日期v_date
然后有两个select XXX into v_XXX from tableXXX where XXX 和几个大于小于的判断
最后插入到表中insert into tableXXX(date, column1, column2 ... ) values(v_date, v_column1, v_column2 ...);另外有一个过程其中有一个语句是truncate table tableXXX; 然后再将日期表的日期置到第二天。
我这边做法是,每天晚上执行第一个过程插入数据,到第二天白天执行第二个过程清除表的数据,再置日期表。
但是有一次发现表中竟然存在一条前一天的数据。考虑到第二个过程会清除所有数据,那就说明前一个过程至少插入数据这个语句是到第二天执行。但是由于这条记录的日期是前一天,就是说取日期这个动作在前一天完成。在取日期到插入表中间只有一些select into和大于小于的判断,不会被锁,没道理整整执行一天时间。
请高手帮忙看看,为什么会出现这种现象。我这边的环境是rac的,有两台机器。