前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++ Linux的老铁 主要内容含:
--查看事务提交方式
SELECT @@autocommit ;//会显示 @@autocommit=1;默认为自动
--设置事务提交方式
SET @@autocommit=0;//手动
--提交事务
COMMIT;
--回滚事务
ROLLBACK ;
--开启事务
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 ;//会显示 @@autocommit=1;默认为自动
--设置事务提交方式
SET @@autocommit=0;//手动
--提交事务
COMMIT;
--回滚事务
ROLLBACK ;
程序执行报错 ...
模拟抛异常set @@autocommit = 0;
, 所以事务并未提交; rollback ;
回滚事务即可;
-- 方式一
select @@autocommit;
set @@autocommit = 0; -- 设置为手动提交
-- 转账操作 (张三给李四转账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 ;
--开启事务
START TRANSACTION 或 BEGIN;
--提交事务
COMMIT ;
--回滚事务
ROLLBACK;
set @@autocommit = 1; -- 改回自动提交
程序执行报错 ...
模拟抛异常start transaction ;
, 所以事务报错后并未提交; rollback ;
回滚事务即可;
-- 方式二
-- 改回自动提交
set @@autocommit = 1;
-- 转账操作 (张三给李四转账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;
--查看事务隔离级别语法
SELECT @@TRANSACTION_ISOLATION;
--修改事务隔离级别语法
SET [SESSION|GLOBLE] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}