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 日志提供了数据恢复使用的手段。

你可能感兴趣的:(MySQL)