事务,是不可再分的最小工作单元,从宏观角度表示一个完整不可分割的业务,就是批量的DML语句必须同时成功或者同时失败,只要是DML语句开始执行就表示开启了一个事务,只要commit语句执行,标志着事务的结束。在同一事务中,所有的DML语句同时执行成功才会使用commit提交,只要是其中一个DML语句执行失败就要rollback回滚。
针对于数据库,事务保证批量的sql要么全成功,要么全失败,事务特征如下:
1、原子性:整个事务中所有操作,必须作为一个单元全部完成(或全部取消)。
2、一致性:在事务开始之前与结束之后,数据库都保持一致状态。
3、隔离性:一个事务不会影响其他事务运行。
4、持久性:在事务完成以后,该事务对数据库所做的更改将持久地保存在数据库之中,并不会被回滚。
存在概念:
事务(transaction)
一批操作(一组DML)
开启事务(start transaction)
回滚事务(rollback)
提交事务(commit)
禁用或启用事务的自动提交模式(set autocommit)
其中隔离级别:
1、读未提交:read uncommitted
2、读已提交:read committed
3、可重复读:repeatable read
4、序列化:serializable
Oracle只支持read uncommitted和serializable
设置事务的隔离级别:set transaction isolation level serializable;
关于回滚需要注意:只能回滚insert、delete、update语句,不能回滚select,不能回滚create、drop、alter。
delete和truncate都可以删除表中的数据,delete是DML语句,删除数据后还可以回滚,truncate是DDL语句,删除数据之后不可以回滚,truncate语句是将表截断。
如:
delete from t_u;
truncate table t_u;