mysql事务

 1.什么是事务?

  事务是最小的不可分割的单元,事务能够保证一个业务的完整性

  多条SQL语句会有同时成功或同时失败的要求

2.mysql如何控制事务?

  mysql默认是开启事务的(自动提交)

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

默认事务开启的作用是什么?

  当我们去执行一条SQL语句时,效果会马上提现出来,且不能回滚

  事务回滚即撤销SQL语句执行的效果

3.如何让事务能够回滚?

  通过设置自动提交为FALSE的方法来实现,运用roll back进行回滚

 set autocommit=0;
mysql> insert into person values(4,'章华',7);
Query OK, 1 row affected (0.02 sec)

mysql> select * from person;
+------+------+--------+
| id   | name | cardid |
+------+------+--------+
|    1 | 张三 |      1 |
|    2 | 李四 |      3 |
|    3 | 王五 |      6 |
|    4 | 章华 |      7 |
+------+------+--------+
4 rows in set (0.00 sec)

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

mysql> select * from person;
+------+------+--------+
| id   | name | cardid |
+------+------+--------+
|    1 | 张三 |      1 |
|    2 | 李四 |      3 |
|    3 | 王五 |      6 |
+------+------+--------+
3 rows in set (0.00 sec)
再次提交数据
mysql> insert into person values(4,'章华',7);
Query OK, 1 row affected (0.01 sec)
手动提交
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
进行回滚
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
数据具有持久性,一旦提交就不能再进行回滚
mysql> select * from person;
+------+------+--------+
| id   | name | cardid |
+------+------+--------+
|    1 | 张三 |      1 |
|    2 | 李四 |      3 |
|    3 | 王五 |      6 |
|    4 | 章华 |      7 |
+------+------+--------+
4 rows in set (0.00 sec)

4.当事务开启自动提交时,可以使用begin或者 start transaction来进行手动开启事务

开启自动提交功能
mysql> set autocommit=1; Query OK, 0 rows affected (0.00 sec)
查询事务提交的状态 mysql
> select @@autocommit; +--------------+ | @@autocommit | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec)
开始手动提交
mysql> start transaction; Query OK, 0 rows affected (0.00 sec) 插入提条数据 mysql> insert into person values (9,'六六',8); Query OK, 1 row affected (0.06 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | | 9 | 六六 | 8 | +------+------+--------+ 5 rows in set (0.00 sec) 进行回滚 mysql> rollback; Query OK, 0 rows affected (0.01 sec) mysql> select * from person; +------+------+--------+ | id | name | cardid | +------+------+--------+ | 1 | 张三 | 1 | | 2 | 李四 | 3 | | 3 | 王五 | 6 | | 4 | 章华 | 7 | +------+------+--------+ 4 rows in set (0.00 sec)

事务的四大特性

  A原子性:事务是最小的单元,不可以再进行分割

  C一致性:同一事务中的SQL语句,必须保证同时成功或同时失败

  I隔离性:事务1和事务2之间具有隔离性

  D持久性:事务一旦结束,就不可以再进行回滚

事务手动提交的三种方式

  1.修改默认提交:set autocommit=0;

  2.使用begin;

  3.使用start transaction;

事务手动提交:commit;

事务手动回归:collback;

事务的隔离性

原文地址:https://www.cnblogs.com/jingdenghuakai/p/11650537.html