TCL语言---事务管理

TCL语言(transaction control language)–事务管理

事务

  1. 事务:一个或者一组sql语句组成一个执行单元,该单元全部执行或者全部不执行
  2. 事务的ACID属性:
    1. 原子性(atomicity):不可分割的工作单位,要么都执行,要么都不执行
    2. 一致性(consistency):必须使数据库从一个一致性状态转化到另一个一致性状态
    3. 隔离性(isolation):一个事务的执行不受另外的事物的影响
    4. 持久性(durability):事务一旦提交执行,对数据的影响是持久性的
  3. 事务分类:
    1. 隐式事务:事务没有明显的开始结束标记(delete,update,insert)
    2. 显式事务:事务具有明显的开始结束标记
      前提:必须首先禁用自动提交功能
  4. 语法步骤
    步骤1:开启事务
    set autocommit=0; #设置自动提交功能禁用
    start transaction;
    步骤2:编写事务中的sql语句(只是增删改查语句)
    语句1;
    语句2;

    步骤3:结束事务
    commit; #提交事务
    rollback; #回滚事务

5.事务的隔离级别:
脏读 不可重复读 幻读
read uncommitted 可 可 可
read committed 不可 可 可
repeatable read 不可 不可 可
serializable 不可 不可 不可
Mysql 中默认第三个级别
查看隔离级别:select @@tx_isolation;
设置隔离级别:set session transaction isolation level 隔离级别;
6.设置保存点: savepoint 断点名;

7.在事务中,delete语句支持回滚,但是truncate不支持回滚

USE test;
DROP TABLE IF EXISTS  account;
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20),
balance DOUBLE
);
INSERT INTO account(username,balance) VALUES('john',1000),('lily',1000);
SELECT * FROM account;
-------------------------------------使用事务-------------------------------------------
## 启用事务
SET autocommit=0;
START TRANSACTION;
## 事务中的SQL语句
UPDATE account SET balance=1000 WHERE username='john';
UPDATE account SET balance=1000 WHERE username='lily';
## 结束事务的两种方式
ROLLBACK;
#commit;
-------------------------------------事务中设置保存点-----------------------------------
## 设置保存点,与回滚语句搭配使用
SET autocommit=0;
START TRANSACTION;

SELECT * FROM account;
DELETE FROM account WHERE id=1;
SAVEPOINT a;
DELETE FROM account WHERE id=4;

ROLLBACK TO a;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值