事物处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事物处理相关的知识,希望对你有一定的参考价值。

事务的特性: 
事务有以下四个标准属性的缩写ACID,通常被称为:

原子性确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。

一致性确保数据库正确地改变状态后,成功提交的事务。

隔离性使事务操作彼此独立的和透明的。

持久性确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。

mysql中,事务开始使用COMMITROLLBACK语句开始工作和结束。开始和结束语句的SQL命令之间形成了大量的事务。

COMMIT & ROLLBACK: 
这两个关键字提交和回滚主要用于MySQL的事务。

当一个成功的事务完成后,发出COMMIT命令应使所有参与表的更改才会生效。

如果发生故障时,应发出一个ROLLBACK命令返回的事务中引用的每一个表到以前的状态。

可以控制的事务行为称为AUTOCOMMIT设置会话变量。如果AUTOCOMMIT设置为1(默认值),然后每一个SQL语句(在事务与否)被认为是一个完整的事务,并承诺在默认情况下,当它完成。 AUTOCOMMIT设置为0时,发出SET AUTOCOMMIT =0命令,在随后的一系列语句的作用就像一个事务,直到一个明确的COMMIT语句时,没有活动的提交。

 

开启事务
START TRANSACTION BEGIN

提交事务(关闭事务)
COMMIT

放弃事务(关闭事务)
ROLLBACK

折返点
SAVEPOINT adqoo_1
ROLLBACK TO SAVEPOINT adqoo_1
发生在折返点 adqoo_1 之前的事务被提交,之后的被忽略

事务的终止

设置自动提交模式
SET AUTOCOMMIT = 0
每条SQL都是同一个事务的不同命令,之间由 COMMIT ROLLBACK隔开
掉线后,没有 COMMIT 的事务都被放弃

mysql事物处理实例

MYSQL的事务处理主要有两种方法
1.begin,rollback,commit来实现
    begin开始一个事务
    rollback事务回滚
    commit 事务确认
2.直接用set来改变mysql的自动提交模式
    mysql默认是自动提交的,也就是你提交一个query,就直接执行!可以通过
    set autocommit = 0 禁止自动提交
    set autocommit = 1 开启自动提交
    来实现事务的处理。
但要注意当用set autocommit = 0 的时候,你以后所有的sql都将作为事务处理,直到你用commit确认或 rollback结束,注意当你结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!
MYSQL只有 INNODBBDB类型的数据表才支持事务处理,其他的类型是不支持的!

实例:

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(5);
Query OK, 1 row affected (0.00 sec)

mysql> insert into dbtest value(6);
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from dbtest;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(7);
Query OK, 1 row affected (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from dbtest;
+------+
| id   |
+------+
|    5 |
|    6 |
+------+
2 rows in set (0.00 sec)

以上是关于事物处理的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中的事物处理

EF+LINQ事物处理

世间所有的事物都是数据的处理和传递,程序更是如此。

PHP和Mysql事物处理

asp.net 事物处理

jQuery绑定事物处理器