新手上路教程3_TCL语言

重点–事务

1. 含义

  1. 事务 : 一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行

2. 特点

  1. 原子性 : 一个事务是不可再分割的整体,要么都执行要么都不执行
  2. 一致性: 一个事务可以使数据从一个一致状态切换到另外一个一致状态
  3. 隔离性 : 一个事务不受其他事务的干扰,多个事务互相隔离
  4. 持久性 : 一个事务一旦提交了,则永久的持久化到本地

3. 事务的使用步骤

  1. 了解

  2. 隐式(自动)事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert、update、delete

  3. 显式事务:具有明显的开启和结束

  4. 使用显式事务:

  5. 开启事务

```mysql
set autocommit = 0;
start transaction ; #可以省略
```
  1. 编写一组逻辑sql语句

    • sql 语句支持的是insert,update,delete
    • 在代码中,这里要指明下,,不然select也成了事务
  2. 设置回滚点

    savepoint 回滚点名
    
  3. 结束事务

    1. 提交 commit
    2. 回滚 rollback
    3. 回滚到指定的地方 : rollback to 回滚点名
  4. 并发事务

    1. 事务的并发的问题的产生:

      1. 多个事务 同时操作同一个数据库的相同数据时
    2. 并发问题都有哪些

      1. 脏读 :

        • 一个事务 读取了其他事务还没有提交的数据 ,读到的是其他的事务"更新"的数据
      2. 不可重复读:

        • 一个事务多次读取,结果不一样
      3. 幻读

        • 一个事务读取了其他事务还没有提交的数据,只是读到的是 其他事务 “插入”的数据
    3. 如果解决并发问题

      1. 通过设置隔离级别来解决并发问题
    4. 隔离级别

      脏读 不可重复读 幻读
      read uncommitted:读未提交 × × ×
      read committed: 读已提交 × ×
      repeatable read:可重复读 ×
      serializable:串行化
posted @ 2019-03-23 12:50  Firewine  阅读(669)  评论(0编辑  收藏  举报