一:事务初识
数据库事务通常指对数据库进行读或写的一个操作过程。有两个目的
- 第一个是为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法;
- 第二个是当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
二:事务的特性
- 原子性(Atomicity):事务必须是原子工作单元,一个事务中的所有语句,应该做到:要么全做,要么一个都不做;
- 一致性(Consistency):让数据保持逻辑上的【合理性】,比如:小明给小红打10000块钱,既要让小明的账户减少10000,又要让小红的账户上增加10000块钱;
- 隔离性(Isolation):如果多个事务同时并发执行,但每个事务就像各自独立执行一样。
- 持久性(Durability):一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改(而不仅仅是内存中的变化)。
使用事务,表的引擎要为innodb引擎
三:事务的开启与提交:
- 事务的开启:begin; start transaction;
- 事务的提交:commit;
- 事务的回滚:rollback;
案例演示:
四:开启autocommit(临时生效):
- OFF(0):表示关闭
- ON (1):表示开启
当set autocommit = 0时,自动提交被临时关闭,如果想要进行insert/update等操作,需要在控制台手动输入commit进行提交,才会在表中查看新增/更新后的数据。
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
mysql> set autocommit=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
五:开启autocommit(永久生效):
修改配置文件:vi /etc/my.cnf 在[mysqld]下面加上:autocommit=1,重启服务才会生效