隐式事务和显示事务

隐式事务和显示事务

隐式事务和显示事务

隐式事务又称自动提交事务,就这么点区别,说多点就是下面这一大段

事务是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;

💎 相关推荐