作用:ROLLBACK即回退或回滚,表示事务中有执行失败的 *** 作,这些 *** 作必须被撤销,ROLLBACK告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的部分或所有更新必须被撤销。
注意点:当执行完DML语句后,处理的一些数据都会放在回滚段中,就等待用户执行commit和rollback,当执行完commit和rollback后,回滚段中的数据就会被删除。DDL是隐性提交的,不能回滚。而最常用的DML语言(update,delete,insert)是需要进行显示提交的,也就是说需要手动地去commit。
访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库 *** 纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起。
并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体 *** 作组成。
commit是提交 *** 作,将 *** 作显式提交到数据库,这里需要注意,并不是所有sql语句执行完都需要进行commit *** 作,有些 *** 作执行完就已经自动隐式提交到数据库了。
ROLLBACK回滚 *** 作,在commit *** 作之前可以使用rollback *** 作回滚到之前的状态。
执行完sql语句之后,处理的数据都会放在回滚段中(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK后,放在回滚段中的数据就会被删除。
扩展资料:
COMMIT / ROLLBACK ,都是用在执行 DML 语句之后的。所谓 DML 语句就是 INSERT / DELETE / UPDATE / SELECT ,而 CREATE TABLE / VIEW 之类的语句,是 DDL。
DML 语句,执行完之后,处理的数据,都会放在回滚段中(除了 SELECT 语句),等待用户进行提交(COMMIT)或者回滚 (ROLLBACK),当用户执行 COMMIT / ROLLBACK 后,放在回滚段中的数据就会被删除。
所有的 DML 语句都是要显式提交了,所谓“显式提交”,就是要执行 COMMIT / ROLLBACK 。
而其他的诸如 DDL 语句的,都是隐式提交的。
就是说,不用进行COMMIT/ROLLBACK。在运行那些非 DML 语句后,ORACLE 已经进行了隐式提交,例如 CREATE TABLE,在运行脚本后,表已经建好了,并不在需要再进行显式提交。
MYSQL 事务处理主要有两种方法
1、用 begin, rollback, commit 来实现
begin 或/ start transaction )开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用 SET 来改变 MySQL 的自动提交模式:
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
1.不管 autocommit 是1还是0
start transaction 后,只有当 commit 数据才会生效, rollback 后就会回滚。
2、当 autocommit 为 0 时
不管有没有 start transaction .
只有当 commit 数据才会生效, rollback 后就会回滚。
3、如果 autocommit 为1 ,并且没有 start transaction .
调用 rollback 是没有用的。因为事务已经自动提交了。
事务测试1
事务测试2
flag 相当一定义这个保存点的名字
savepoint flag : savepoint 允许在事务中创建一个保存点,一个事务中可以有多个savepoint ;
release savepoint flag :删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
rollback to flag :把事务回滚到标记点;
set transaction :用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有
READ UNCOMMITTED 、 READ COMMITTED 、 REPEATABLE READ 和 SERIALIZABLE
select @@transaction_isolation
SELECT @@SESSION.transaction_isolation, @@SESSION.transaction_read_only
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)