• mysql数据库事务


    事务:

    一个或者一组sql语句组成一个执行的单元,这个单元要么全都执行,要么都不执行。也就是每个sql语句相互依赖。如果中间有一条出现错误则整个单元将回滚。(回滚就是刚刚的操作都撤销)

    事务的属性:   (面试题)

    1.原子性:指事务是不可再分的单位,事务中的操作要么都发生,要么都不执行。

    2.一致性:事务必须使数据库从一个一致性变换到另一个一致性

    3.隔离性:每一个事务之间是相互隔离互不干扰的。即使是并发的事务操作也是互不干扰的

    4.持久性:事务一旦提交,数据库相对应的改变就是用久的了。不可以撤销。

    事务的创建:

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

    如:insert  update  delete 

    显示事务:有明显的开启和结束标志

    前提:必须先设置自动提交功能为禁用(set autocommit = 0)只能当前会话

    开启事务:

    set autocommit = 0

    start transaction 

    编写事务中的sql语句(select insert update delete)

    结束事务(commit 提交事务或者 rollback 回滚事务) 语句有异常回滚,没有就提交

    重点:

    同时运行多个事务,这些事务访问数据库相同数据时,如果没有采取隔离机制,就会发生各种并发问题

    1.脏读:(针对的是查询)两个事务,T1,T2读取了一个字段,T1读取了被T2更新但是还没提交的字段,假如T2回滚,T1刚刚读取的就是临时无效的。

    2.不可重复读:两个事务,1读取了一个字段,2对这个字段进行了更新,1再去读取同一个字段,值是不同的

    3.幻读:(针对的插入或者删除)两个事务!T1从表中读取一个字段,然后T2在该表中插入了一些新的行,这时T1再去读取就会多出几行

  • 相关阅读:
    The archive: D:/Program Files (x86)/apache-tomcat-6.0.39/bin/bootstrap.jar w
    DTO
    关于REST的JSON格式
    extjs renderer function参数设置
    转::持久化实体persist()--往数据表中插入数据
    使用Ext.define自定义类
    转::Ext.getCmp()应用
    【转】VO DAO BO
    JPA的查询语言:JPQL的命名查询 @NamedQuery
    11.25 冒泡事件 form表单事件
  • 原文地址:https://www.cnblogs.com/shxkey/p/11298584.html
Copyright © 2020-2023  润新知