MySQL数据库中的事务

TCL(Transaction Control Language) 事务控制语言

事务:

一个或一组SQL语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。

一、事务的特性:

原子性(‘Atomicity’):一个事务不可再分割,要么都执行要么都不执行
一致性(‘Consistency’):一个事务执行会使数据从一个一致状态切换到另外一个一致状态
隔离性(‘Isolation’):一个事务的执行不受其他事务的干扰
持久性(‘Durability’):一个事务一旦提交,则会永久的改变数据库的数据.

二、事务的隔离级别:

隔离名称 脏读 不可重复读 幻读
READ UNCOMMITTED √ √ √
READ COMMITTED × √ √
REPEATABLE READ × × √
SERIALIZABLE × × ×

mysql中默认 第三个隔离级别 REPEATABLE READ
oracle中默认第二个隔离级别 READ COMMITTED

查看隔离级别
SELECT @@tx_isolation;

设置隔离级别
SET SESSION|GLOBAL TRANSACTION ISOLATION LEVEL 隔离级别

显示存储引擎:
SHOW ENGINES;

显示事务是否开启
SHOW VARIABLES LIKE ‘autocommit’;

三、事务的创建

1.隐式事务:事务没有明显的开启和结束的标记

比如:INSERT、UPDATE、DELETE

2.显式事务:事务具有明显的开启和结束的标记

前提:必须先设置自动提交功能为禁用

步骤一:开启事务

SET autocommit=0; 自动提交设置为0
START TRANSACTION; 开启事务

步骤二:编写事务中的sql语句(select、insert、update、delete)

语句1;
语句2;

步骤三:结束事务 (此处只能在做一个执行,需要判断成功与否只能在java开发工具中判断)

COMMIT; 成功提交事务

ROLLBACK; 失败回滚事务

①在SQL语句中的某处设置【SAVEPOINT 节点名;】
②在事务结束处 【ROLLBACK TO 节点名;】滚回到设置保存点处 实例在 1.2

1.1 演示事务过程
开始事务

SET autocommit=0;
START TRANSACTION;

sql语句

UPDATE account SET balance=500 WHERE username=‘jack’;
UPDATE account SET balance=2000 WHERE username=‘rose’;

结束事务

COMMIT;
##rollback;

SELECT * FROM account;

1.2 演示savepoint的使用

SET autocommit=0;
START TRANSACTION;

DELETE FROM account WHERE id=3;
SAVEPOINT a;##设置保存点
DELETE FROM account WHERE id=4;

ROLLBACK TO a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值