赞
踩
注意: 默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式的提交事务。
- drop table if exists account;
- create table account(
- id int primary key AUTO_INCREMENT comment 'ID',
- name varchar(10) comment '姓名',
- money double(10,2) comment '余额'
- ) comment '账户表';
- insert into account(name, money) VALUES ('张三',2000), ('李四',2000);
- -- 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;
注意:上述的这种方式,我们是修改了事务的自动提交行为 , 把默认的自动提交修改为了手动提交 , 此时我们执行的 DML 语句都不会提交 , 需要手动的执行 commit 进行提交。
COMMIT;
- -- 开启事务
- 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;
为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:
1). 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;
- SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED |
- READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
注意:事务隔离级别越高,数据越安全,但是性能越低。
♥️关注,就是我创作的动力
♥️点赞,就是对我最大的认可
♥️这里是小刘,励志用心做好每一篇文章,谢谢大家
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。