mysql-14-transaction

#TCL
/*
事务控制语言
事务:一个或一组sql语句组成一个执行单元,每条sql语句相互依赖
这个执行单元要么全部执行、要么全部失败后回滚

案例:转账

事务的acid属性
1.原子性:事务时一个不可分割的工作单位
2.一致性:事务必须使数据库从一个一致性状态转换为另一个一致性状态
3.隔离性:一个事务的执行不能被其他事务干扰(但也要看隔离级别)
4.持久性:一个事务一旦提交,改变是永久性的
*/

show engines;  # innodb支持事务

#事务的创建
#隐式事务:没有明显的开启和结束的标记。比如insert, update, delete语句
#显式事务:具有明显的开启和结束的标记,必须先设置自动提交功能为禁用
/*
set autocommit=0; 开启事务
start transaction;  可选的
语句1;
语句2;
savepoint point1;  保留点
...
commit/roll back;  结束事务  roll back to point1 回滚到指定保留点

delete可以回滚,truncate不能回滚
*/

USE test;

create table if not exists account(
	id int primary key auto_increment,
    username varchar(20),
    balance int
);

insert into account
values(null, '张无忌', 1000), (null, '赵敏', 1000);
select * from account;

set autocommit=0;
start transaction;
update account set balance=1000 where username='张无忌';
update account set balance=1500 where username='赵敏';
commit;

select * from account;

drop table account;

  

posted @ 2020-07-07 16:35  王朝君BITer  阅读(129)  评论(0编辑  收藏  举报