MySQL 事务管理

一、事务的使用
#准备测试表和原始数据
CREATE TABLE customers(name VARCHAR(20) NOT NULL PRIMARY KEY);
INSERT INTO customers VALUES('Peter'),('Lucy');

#使用 BEGIN 和 ROLLBACK
BEGIN;#开始事务
SELECT * FROM customers;#显示 Peter,Lucy
DELETE FROM customers;#清空表数据
SELECT * FROM customers;#无记录显示
ROLLBACK;#回滚事务
SELECT * FROM customers;#显示 Peter,Lucy

#关闭 AUTO_COMMIT 自动提交功能,INSERT 等将可以回滚。
SET ATUOCOMMIT = 0;
SELECT @@AUTOCOMMIT;
INSERT INTO customers(name) VALUES('TOM');
SELECT * FROM customers;#显示 Peter,Lucy,TOM
ROLLBACK;
SELECT * FROM customers;#显示 Peter,Lucy
SET AUTOCOMMIT = 1;

#使用SAVEPOINT 保存点
BEGIN;
INSERT INTO customers(name) VALUES('TOM'),('May');
SAVEPOINT sp;
SELECT * FROM customers;
INSERT INTO customers(name) VALUES('Jim');
SELECT * FROM customers;
ROLLBACK TO SAVEPOINT sp;
SELECT * FROM customers;
ROLLBACK;
SELECT * FROM customers;
二、事务隔离级别
#设置事务隔离级别 READ UNCOMMITTED;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
三、事务内部的机制

UNDO 日志:又称为回滚段,在进行数据插入、更新、删除的场合保存变更前的数据。
REDO 日志:根据数据库的不同,有时被称为事务处理日志或日志。事务处理确定后,由于错误等原因使数据更新没有正确反映到数据库中的时候,REDO 日志提供了数据恢复使用的手段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值