隐式事务和显示事务
隐式事务又称自动提交事务,就这么点区别,说多点就是下面这一大段
事务是SQL Server防止你的数据出现不一致状态的基础结构.我们已经学习过事务是如
何工作的.在这一节中,我们将学习在SQL Server开发环境下如何让事务为你工作.S Q L
S e r v e r中事务有两种,它们是隐式事务和显式事务。
隐式事务
隐式事务是SQL Server为你而做的事务.隐式事务又称自动提交事务.如果运行一条
ddl语句 or dcl语句 or正常退出sql*plus,但没有明确发出commit和rollback
则会触发隐式事务自动提交
隐式提交的注意事项
1、执行ddl语句时,前面的dml操作也会被提交到数据库中
因为是在一个session里,那执行ddl语句的时候前面的dml语句肯定也会“不可幸免”的被提交到库中。
2、即使ddl语句执行失败,前面的dml操作也会被提交到数据库中
这就有点儿让人奇怪了,ddl都执行失败了,怎么还会提交呢?这就需要探究一下隐式提交的本质了(下文有叙述)。
3、在前面1和2的基础上总结
为了避免隐式提交或者回滚,尽量保证一条或者几条DML操作完成后有显示的提交或者回滚,防止后续执行的DCL或者DDL自动提交前期的DML操作。
隐式提交的本质
1、一条ddl语句执行了两次commit
commit;
ddl statement;
commit;
第一个commit将当前session中未提交的事务隐式提交,以保证ddl语句失败时的回滚位置。
第二个commit将ddl 提交
提交的三种方式
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;
(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;