select count(*) from table_name;insert into table_name(f1,f2) values ('v1','v2');select count(*) from table_name;delete from table_name where f1='v1';select count(*) from table_name;在提交之前,你每做一个操作,通过另外一个session:select count(*) from table_name;你就会理解事务和数据的关系了。

解决方案 »

  1.   

    哦,谢谢楼上的大哥,那请问,你的意思是不是实际上我们做的
    一系列的select / insert into /update /delete from这些操作并没有真正生效呢?
    而是在commit后才生效?
      

  2.   

    实际上应该是dml语句在不提交之前是只有在当前session中起作用的。
      

  3.   

    对你自己来说(当前session),是立刻有效的,
    但在其他session来看,需要在COMMIT后才有效果.例如:
    在这个操作前,表有100条记录
    insert into table_name(f1,f2) values (v1,v2);
    F8 后,你select将看到101条记录,但其他session则只看到100条(即使为同一用户不同session也只能看到100条)
    在COMMIT后,其他session才可以看到这个新纪录