zoukankan      html  css  js  c++  java
  • SQL里面的事务

    --事务:是一种处理机制,一种处理方式,并不是一个实际的操作.包含在事务内的所有有可能修改表数据的操作,要么都能成功执行,要么都不执行。
    --转帐:你的帐户余额减少,对方帐户余额增加
    --begin
    --update bank set cmoney-=1000 where name='aa'
    --update bank set cmoney+=1000 where name='bb'
    --end
    --print @@error --只是找到最近一语句的错误号
    --事务的特点:ACID:
    --A:原子性:事务是一个不可以再分的整体
    --C:一致性:事务在提交前后数据需要保持某种程度的一致
    --I:隔离性:事务是独立的,不会受其它的事务影响。
    --D:持久性:事务一旦提交,那么数据永久更改
    --事务语法:
    --begin transaction :开启事务
    --commit transaction :提交事务
    --rollback transaction :回滚事务
    --具体使用事务的方式:将你需要使用事务机制处理的sql命令包含在 事务的开启和事务提交 或者 事务的开启和事务的回滚 之间

    --使用事务实现转帐:
    declare @error int=0 --记录语句所生成的错误号
    begin transaction --开启事务了
    update bank set cmoney-=500 where name='aa'
    --永远不能在执行完一条sql命令的时候去判断事务是否需要提交还是回滚:1.这样一来,多条sql命令就不再是一个整体了 2.其它的sql命令就不再包含在事务之中,不能使用事务机制进行处理了 在每一条语句后都去使用变量记录当前语句所生成的错误号
    --if(@@ERROR <> 0)
    -- rollback transaction
    set @error+=@@ERROR --记录错误号
    update bank set cmoney+=500 where name='bb'
    set @error+=@@ERROR
    --select * from bank
    --执行完所有语句之后,再统一进行判断事务是否需要提交或者回滚
    if(@error<>0) --有错误
    rollback transaction
    else
    commit transaction
    ---------------
    go
    --使用事务实现转账
    declare @error int=0 --记录语句所生成的错误号
    begin transaction --开启事务了
    update bank set cmoney -=500 where name ='aa'
    set @error +=@@ERROR --记录错误号
    update bank set cmoney +=500 where name ='bb'
    set @error +=@@ERROR
    --执行完所有语句之后,再统一进行判断事务是否需要提交或者回滚
    if(@error <>0)--有错误
    rollback transaction
    else
    commit transaction
    -----------------------------

    人的本事不是与生俱来的,不是你掌握了多少,而是当你面对一个未知问题的时候,你能用多少时间来掌握!
  • 相关阅读:
    Spark的Java API例子详解
    idea 创建scala maven工程
    Hbase 创建表 插入数据Hb
    zookeeper.ClientCnxn: Opening socket connection to server CDH03/192.168.121.147:2181. Will not attem
    null, message from server: "Host 'CDH01' is not allowed to connect to this MySQL server
    虚拟机设置静态网络
    linux无密访问
    Hbase启动出问题 master.HMaster: Failed to become active master
    简单的深度优先例子
    常用git操作命令
  • 原文地址:https://www.cnblogs.com/dianshen520/p/4352016.html
Copyright © 2011-2022 走看看