zoukankan      html  css  js  c++  java
  • 数据库之事务

    数据库事务是指作为单个逻辑工作单元执行的一系列操作。

    为什么要有事务?

      假设我们在进行银行转帐的时候,至少会执行两条SQL语句,一条SQL语句是减少转帐人里帐户的钱,一条是增加收帐人里帐户钱。 例如有一个朋友要转帐1000元:1、那么转帐人的银行里的钱减少1000                

          2、那么收帐人的银行里的钱增加1000

      我们往深一点想,在执行这两条SQL语句的时候,会不会发生问题?会,有时候天灾,人祸的。例如。在执行第一条SQL语句的时候,就在这0.001秒之间机器突然出现故障,那么这时候有可能第二条SQL语句没有执行。那这时候转帐人不就很惨,他自己转帐了1000元,自己帐户已经扣了钱,可是对方的帐户没收到钱,那么对方会很生气的认为你没有给他转帐。

      这还是两条SQL语句出现问题的情况,试想如果银行在处理事务时有100条SQL语句要执行,每条都很重要,那么出现问题的概率不是更大了吗?为了针对这种情况出现了事务。

    那么什么是事务?

      事物是指访问并可能更新数据库中各种新据项的一个程序执行单行(UNIT),也就是由多个SQL语句组成,必需作为一个整体执行。 事物说白了一点,就是同生共死,意思要么全部的SQL语句都执行成功,要么全部的SQL语句都执行失败。所以为了防止上面那种情况,要么两条SQL语句都执行成功,要么两条SQL语句都执行失败。

    通过例子来了解一下事务,在举个例子前先看一下,先看几个事务常用到的词

    •  开始事务:BEGIN TRANSACTION
    •  事务提交:CIMMIT TRANSACTION
    •  事务回滚: ROLL BACK TRANSACTION
    •  查看语句有没有错误: @@ERROR

    当没有发生错误的时候便可以将事务进行提交(CIMMIT TRANSACTION),而查看有没有SQL语句的执行错误,可以用 @@ERROR来进行查看。当发生错误的时候便使用(ROLL BACK TRANSACTION)将SQL语句回滚到最最之前,没有执行SQL语句那时候。

    --事务
    --开始事务 begin tran(transaction)
    --提交 commit
    --回滚 rollback
    
    select * from Car
    select * from Brand
    
    begin transaction --开始事务
    delete from Car where Code='c005'
    delete from Brand where Brand_Code='b002'
     if @@ERROR=0--判断是否出错,如果执行没错@@ERROR为0
    begin
        commit -- 提交事务
    end
    else
    begin
        rollback--回滚事务
    end
    
    --try catch
    begin transaction --开始事务
    begin try --try里面写要执行的代码
        delete from Car where Code='c005'
        delete from Brand where Brand_Code='b002'
        commit
    end try
    begin catch
        rollback
    end catch
  • 相关阅读:
    PBE加密 .net 实现
    手把手教你写一个windows服务 【基于.net】 附实用小工具{注册服务/开启服务/停止服务/删除服务}
    fish redux 个人理解
    .net Core 图片验证码 基于SkiaSharp实现
    .net core webapi jwt 更为清爽的认证 ,续期很简单(2)
    js删除数组对象中符合条件的数据
    编译.net .net Core程序 代码,仅做备份
    Mybatis架构相关的知识
    java选择题知识总结大全
    Mybatis详解(二) sqlsession的创建过程
  • 原文地址:https://www.cnblogs.com/franky2015/p/4668758.html
Copyright © 2011-2022 走看看