遇到一个问题求大佬讲解

解决方案 »

  1.   

    C,这个答案你自己动手实际做个测试就知道了。
    提示:Oracle的DDL前后都隐含了commit
      

  2.   

    后面有个rollback,回滚以后就恢复到执行命令之前了。
      

  3.   

    Rollback其实就是commit的逆操作,rollback主要做如下事情:撤销已做的所有修改。其完成方式如下:从undo段读回数据,然后实际上逆向执行前面所做的操作,并将undo条目标记为已用。如果先前插入了一行,ROLLBACK会将其删除。如果更新了一行,回滚就会取消更新。如果删除了一行,回滚将把它再次插入。
    会回滚到你做了commit操作的那个状态,你这几条sql都没有提交,所以会回滚到初始状态。当然这只针对插入/删除/更新数据这一类的操作。创建表回滚不了的。就是说回滚以后b表还存在,但是前几条插入数据的sql都回滚掉了。
      

  4.   

    a,b表都只有2,abc,2这行数据,前面插入的1那行回滚掉了。没仔细看还以为先创建的表b再插入的2那行数据
      

  5.   

    https://www.cnblogs.com/fan-yuan/p/7879353.html
      

  6.   


    这个没说是什么数据库产品啊,也有点问题。
    比如PG,begin开个事务,DDL照样可以回滚