MySQL事务处理实现方法步骤

需求说明:
案例背景:银行的转账过程中,发生意外是在所难免。为了避免意外而造成不必要的损失,使用事务处理的方式进行处理:
A账户现有余额1000元,向余额为200的B账户进行转账500元。可能由于某原因:
A账户在扣除转账金额时发生错误,使用事务回滚来返回到初始状态
A账户成功扣除转账金额后,B账户添加转账金额发生错误,使用事务回滚到初始状态
提示:先建数据表account,字段包括姓名(username)、余额(money),再分别利用事务处理以上两种情况。

#创建账户表 
CREATE TABLE IF NOT EXISTS account( 
  id INT(11)NOT NULL AUTO_INCREMENT PRIMARY KEY, 
  username VARCHAR(32)NOT NULL, 
  money DECIMAL(9,2) 
)ENGINE=INNODB; 
#插入用户数据 
INSERT INTO account(username,money)VALUES('A',1000.00); 
INSERT INTO account(username,money)VALUES('B',200.00); 
   
/*事务处理*/ 
#  A账户汇款失败 
SELECT * FROM account; 
#第一步 关闭事务自动提交模式 
SET autocommit=0; 
#第二步 开始事务 
START TRANSACTION; 
#第三步 发现汇款失败,将事务回滚ROLLBACK ||  汇款成功将事件commit 
#假设语法错误 
UPDATE account SET money=money-500 WHERE username='A'; 
SELECT * FROM account; 
UPDATE account SET money=money+200 WHERE username='B'; 
ROLLBACK; 
#第四步 还原MySQL数据库的的自动提交 
SET autocommit=1; 
SELECT * FROM account; 
   
   
/*B接收汇款失败*/ 
SELECT *FROM account ; 
SET autocommit =0; 
START TRANSACTION; 
UPDATE account SET money=money-500 WHERE username='A'; 
SELECT * FROM account ; 
#假设语法错误 
UPDATE account SET money=money+200 WHERE username ='B'; 
ROLLBACK; 
SET autocommit =1; 
SELECT * FROM account; 
   
#清除数据 
<pre>TRUNCATE account;

备注:
使用IF NOT EXISTS创建数据表的解释

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5ae5d4f328c421c0f791ee42832fd5ae.html