zoukankan      html  css  js  c++  java
  • 事务测试转账

    事务思路图:

     1 -- mysql 是默认开启事务自动提交的
     2 SET autocommit=0 -- 关闭
     3 SET autocommit=1 -- 开启(默认的)
     4 
     5 -- 手动处理事务
     6 START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内
     7 
     8 INSERT xxx
     9 INSERT xxx
    10 
    11 -- 提交:持久化(成功)
    12 COMMIT 
    13 -- 回滚:回到原来的样子(失败)
    14 ROLLBACK
    15 
    16 -- 事务结束
    17 SET autocommit=1 -- 开启自动提交
    18 
    19 -- 了解
    20 SAVEPOINT 保存点名 -- 设置一个事务的保存点   比如小时候玩游戏,死了之后又从死的那一关开始玩
    21 ROLLBACK TO SAVEPOINT 保存点名 -- 回滚到保存点
    22 RELEASE SAVEPOINT 保存点名 -- 撤销保存点

    模拟转账:

     1 CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci
     2 USE shop
     3 CREATE TABLE man (
     4  `id` INT(3) NOT NULL AUTO_INCREMENT,
     5  `name` VARCHAR(20) NOT NULL,
     6  `money` DECIMAL(9,2) NOT NULL,
     7  PRIMARY KEY (`id`)
     8  )
     9  
    10  INSERT INTO man (`name`,`money`)
    11  VALUES ('a',2000.000),
    12  ('b',10000.00)
    13 
    14 -- 模拟转账:事务
    15 SET autocommit = 0  -- 关闭自动提交
    16 START TRANSACTION -- 开启一个事务
    17 
    18 UPDATE man SET money=money-500 WHERE `name`='a'   -- a 减500
    19 UPDATE man SET money=money+500 WHERE `name`='b'   -- b 加500
    20  
    21 COMMIT  -- 事务提交  一致性,事务一但提交不可逆
    22 ROLLBACK -- 事务回滚
    23 
    24 SET autocommit = 1  -- 打开自动提交
  • 相关阅读:
    Java包(package)详解
    linux下c++sleep函数
    c++ 一个cpp文件如何调用另一个cpp文件已经定义的类?我不想重复定义
    c++ 断言
    C++类指针初始化
    面向对象编程
    CentOS 下通过命令登录Mysql
    (总结)CentOS Linux使用crontab运行定时任务详解
    【工具】Homebrew的安装及使用
    c++
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14763912.html
Copyright © 2011-2022 走看看