初一看,我认为commit只会提交if代码块中的dml语句,而不会提交if代码块之前的dml,经测试后,发现结论与想我的不致.
附上测试代码
SQL> create table log_test(seq int,logman varchar2(10));
Table created
SQL> create table other_log(seq int,logman varchar2(10));
Table created
SQL> declare
2 va varchar2(10);
3 b integer;
4 begin
5 insert into log_test values(1,'zhaixy');
6 va:='sex';
7 if (va='sex') then
8 dbms_output.put_line('haha');
9 insert into other_log values(1,'zhaixy');
10 commit;
11 end if;
12 end;
13 /
haha
用plsql developer开启新的会话,查询log_test及other_log表
发现两表皆插入了数据,而不是我之前想的仅插入if代码块中的other_log
结论:
if代码块中的commit语句会一并提交if代码块及之if代码块之前所有的dml
再次说明对于事务的理解不够清晰与深入.
目前从事的金融行业,事务的重要性是不言而喻.努力学习吧