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;
----想成为合格的算法工程师----