MySQL事务功能
1.事务简述
一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的。如果在事务的任何操作失败,则整个事务将失败。
2.事务特性
原子性:在事务的操纵中,要么都执行、要么都不执行
一致性:事务中,保证数据从一个一致状态变为另一一致状态
隔离性:每个事务互不干扰,一起执行也可
持久性:事务提交后,数据的影响是永久性的
3.事务使用
(1)自动提交
mysql> set autocommit=1; //开启事务自动提交,set autocommit=0禁止自动提交
(2)手动提交
mysql> begin; //事务开始声明
mysql> SQL语句...; //执行的SQL语句
mysql> rollback; //回滚事务
mysql> commit; //提交事务
注:回滚只能回滚当前事务提交之前操纵,所有当前事务提交成功的全部失效
(3)自动回滚的情况
begin后手动退出数据库(如Ctrl+C、quit、exit)
服务器断电
(4)例子:转账
1.给对方转账1000,帐号不对
2.输入转入金额
3.提交确认
begin;
create database hehe;
create table hehe.a(number int,user char(4),menony int(4));
insert into hehe.a values ('1','a','1000');
insert into hehe.a values ('2','b','10');
commit; //正常提交
事务操作
begin; //开始
update hehe.a set menony='0' where user='a';
rollback; //回滚操作
begin;
update hehe.a set menony='0' where user='a';
update hehe.a set menony='1010' where user='b';
commit; //提交
rollback; //由于系统已经提交,故不能撤销,