事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,,即这些操作要么同时成功,要么同时失败
默认mysql的事务是自动提交的,也就是说,当执行一条DML语句,mysql会立即隐式地提交服务
事务操作:
查看/设置事务提交方式:select @@autocommit;
set @@autocommit=0;//设置为手动提交
开启事务:start transaction或begin
提交事务:commit
回滚事务:rollback;
代码:
create table account(
id int auto_increment primary key comment '主键ID',
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='张三' or name='李四';
select @@autocommit;/*查看事务提交方式*/
set @@autocommit=0;/*设置事务提交方式:0为手动提交,1为自动提交*/
-- 转账操作(张三给李四转1000)
-- 1.查询张三账户余额
select * from account where name='张三';
-- 2.将张三的账户余额-1000
update account set money=money-1000 where name='张三';
出现异常...
-- 3.将李四的余额+1000
update account set money=money+1000 where name='李四';
commit;/*提交事务*/
rollback ;/*回滚事务*/
-- 方式二
-- 转账操作(张三给李四转1000)
start transaction ;
-- 1.查询张三账户余额
select * from account where name='张三';
-- 2.将张三的账户余额-1000
update account set money=money-1000 where name='张三';
出现异常...
-- 3.将李四的余额+1000
update account set money=money+1000 where name='李四';
commit;/*提交事务*/
rollback ;/*回滚事务*/