============================================================================================================MySQL数据库:创建表格T1 
CREATE TABLE `t1` (
  `Id` char(10) NOT NULL
) 然后创建不同的存储过程进行嵌套事务中commit和rollback分析。
1:
存储过程代码:
BEGIN
start transaction; 
insert into T1 values('1');
start transaction; 
insert into T1 values('2');
rollback;
       commit;
END执行结果
  id
  12:
存储过程代码:
BEGIN
start transaction; 
insert into T1 values('1');
start transaction; 
insert into T1 values('2');
commit;
       rollback;
END执行结果
  id
  1 
  2
分析: rollback只是回滚最近一个事务,对于已经嵌套事务中已经提交的不能进行回滚。
       commit将所有事务都进行提交。
============================================================================================================SQL Server数据库:
对 COMMIT TRANSACTION 或 COMMIT WORK 的每个调用都应用于最后执行的 BEGIN TRANSACTION。如果嵌套 BEGIN TRANSACTION 语句,那么 COMMIT 语句只应用于最后一个嵌套的事务,也就是在最内层的事务。即使嵌套事务内部的 COMMIT TRANSACTION transaction_name 语句引用外部事务的事务名,该提交也只应用于最内层的事务。ROLLBACK TRANSACTION 语句的 transaction_name 参数引用一组命名的嵌套事务的内层事务是非法的,transaction_name 只能引用最外部事务的事务名。如果在一组嵌套事务的任意级别执行使用外部事务名称的 ROLLBACK TRANSACTION transaction_name 语句,那么所有的嵌套事务都将回滚。如果在一组嵌套事务的任意级别执行没有 transaction_name 参数的 ROLLBACK WORK 或 ROLLBACK TRANSACTION 语句,那么它将回滚所有嵌套事务,包括最外部事务。 引用来源:http://runboliu.blog.163.com/blog/static/13459317201001345256968/============================================================================================================Oracle数据库:
oracle使用隐式事务,commit和rollback都是全部回滚到最早事务开始, commit和rollback不能相互覆盖。
============================================================================================================
============================================================================================================
============================================================================================================
大致这样分析,有没有不足或者错误的地方, 希望大家指正!