摘要:本文主要学习了MySQL数据库的事务操作。
事务是一组逻辑处理单位,可以是执行一条SQL语句,也可以是执行几个SQL语句。
事务用来保证数据由一种存储情况变为另一种情况,组成事务的各个单元要么都执行成功,要么都执行失败。
如果只是简单的一条SQL语句的执行,那么是不需要事务的,但在一些复杂的情况下,一个操作会涉及到多条SQL语句的执行,这种情况下就有必要保证所有的操作全部成功或者全部失败。
比如,小明给小红转账的一个操作,就会涉及到从小明账户扣钱和给小红账户充钱的两个操作。只有两个操作都成功执行了整个操作才算成功,这时就可以提交整个事务,可以说状态由转账前变到了转账后。否则有任何一个操作执行失败的话整个操作都要算做失败,这时就需要恢复事务,保证两个账户上的金额和转账前是一样的,表示恢复到了转账前的状态。
所以事务是为了保证一组操作的完整性而出现的,也是为了保证数据操作的安全。
保存点(save point):指在事务执行前,或者事务执行后,数据在数据库里的一个存储情况,有时也会被称为状态。
回退(rollback):指撤销事务的操作,事务执行期间执行的操作都将失效,事务会恢复到上一个状态。
提交(commit):值提交事务的操作,事务期间执行的操作全部生效,事务进入一个新的状态。
使用 show engines; 命令查看数据库支持的存储引擎,以及存储引擎是否支持事务:
1 mysql> show engines; 2 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 3 | Engine | Support | Comment | Transactions | XA | Savepoints | 4 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 5 | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | 6 | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | 7 | MyISAM | YES | MyISAM storage engine | NO | NO | NO | 8 | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | 9 | CSV | YES | CSV storage engine | NO | NO | NO | 10 | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | 11 | ARCHIVE | YES | Archive storage engine | NO | NO | NO | 12 | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | 13 | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | 14 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ 15 9 rows in set (0.00 sec) 16 17 mysql>
发现默认的是InnoDB引擎,并且也支持事务。
未完待续。
原文:https://www.cnblogs.com/shamao/p/11905662.html