事务的简介

事务简介
事务是一组操作的集合,他是一个不可分割的工作单位,事务会把所有的操作作为一个整体
一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

事务中的操作全执行成功后才会提交事务。

如果执行事务过程中出现了异常,就要事务回滚(指把临时修改的数据给恢复过去)。

默认Mysql的事务是自动提交的,也就是说,当执行了一条DML语句,Mysql会立即隐式的
提交事务。

事务操作
-- -----------事务操作--------------
-- -----------数据准备----------------

create table account
(
    id int auto_increment comment 'ID' primary key,
    name   varchar(10)  comment '姓名',
    money int comment '余额'
)
comment '账户表';
insert into account(id, name,money) values (null,'张三',2000),(null,'李四',2000);

-- ---------恢复数据-------------

update account set money = 2000 where name='张三';
update account set money = 2000 where name='李四';


-- 转账操作(张三给李四转1000)
-- 1.查询张三账号的余额

select money from account where name='张三';

-- 2.如果余额大于等于1000,张三账号的余额减1000

update account set money=money-1000 where name='张三' ;

-- 3.给李四账户的余额加1000

update account set money=money+1000 where name='李四';


查看/设置事务的提交方式
-- select @@autocommit; 查看是否为自动提交 1自动提交,0手动提交
-- set @@autocommit=0; 设置为手动提交

提交事务
-- commit; 设置为手动后要想提交事务必须执行这一条指令

回滚事务 回滚是为了清空缓冲区,虽然报错了不会提交,但是数据还在缓冲区内,下次提交可能出现问题
-- rollback; 回滚数据的指令

select @@autocommit;
set @@autocommit=1;

 

-- 提交事务
commit;

-- 回滚事务
rollback;


方式2
 开启事务
-- start transaction 或 begin;

提交事务
-- commit;

回滚事务
-- rollback;


-- 1.查询张三账号的余额
start transaction ;-- 开启事务
select money from account where name='张三';

-- 2.如果余额大于等于1000,张三账号的余额减1000
update account set money=money-1000 where name='张三' ;

-- 3.给李四账户的余额加1000
update account set money=money+1000 where name='李四';
-- 提交事务
commit ;
-- 回滚事务
rollback ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值