一、mysql自动提交事务
### --- mysql自动提交事务
——> MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,
——> 每条语句都会自动开启一个事务,
——> 语句执行完毕 自动提交事务,MySQL 默认开始自动提交事务
——> MySQL默认是自动提交事务
二、自动提交事务演示:将tom账户金额 +500元
三、使用 SQLYog 查看数据库:发现数据已经改变
四、取消自动提交
### --- 取消自动提交
——> MySQL默认是自动提交事务,设置为手动提交.
### --- 登录mysql,查看autocommit状态。
SHOW VARIABLES LIKE 'autocommit';
on :自动提交
off : 手动提交
### --- autocommit 改成 off;
SET @@autocommit=off;
### --- 再次修改,需要提交之后才生效
——> 将jack 账户金额 -500元
-- 选择数据库
use db2;
-- 修改数据
update account set money = money - 500 where name = 'jack';
-- 手动提交
commit;
五、sql语句
### --- sql语句
/*
MySql事务操作
手动提交事务
1.开启事务 start transaction; 或者 begin;
2.提交事务 commit;
3.回滚事务 rollback;
自动提交事务
MySql默认的提交方式 自动提交事务
每执行一条DML语句 都是一个单独的事务
*/
-- 手动提交事务演示
-- 成功案例
USE db2;
START TRANSACTION; -- 开启事务
UPDATE account SET money = money - 500 WHERE NAME = 'tom'
UPDATE account SET money = money + 500 WHERE NAME = 'jack';
COMMIT; -- 提交事务
-- 失败案例 会进行回滚
START TRANSACTION; -- 开启事务
INSERT INTO account VALUES(NULL,'张百万',3000);
INSERT INTO account VALUES(NULL,'有财',3500);
-- 直接关闭窗口 模拟系统崩溃 数据没有发生改变
-- 如果事务中 SQL 语句没有问题,commit 提交事务,会对数据库数据的数据进行改变。 如果事务中 SQL 语句有问题,rollback 回滚事务,会回退到开启事务时的状态。
-- 自动提交事务 MySQL 默认每一条 DML(增删改)语句都是一个单独的事务
-- 登录mysql,查看autocommit状态。
SHOW VARIABLES LIKE 'autocommit';
-- 把 autocommit 改成 off;
SET @@autocommit=off;
-- 执行修改操作
-- 选择数据库
USE db2;
-- 修改数据
UPDATE account SET money = money - 500 WHERE NAME = 'jack';
-- 手动提交
COMMIT;