定义MySQL事务的例子


  本文标签:定义MySQL事务

  定义MySQL事务应该是每一个MySQL数据库用户都应该会的,下面就将为您讲解如何定义MySQL事务,希望对您有所帮助  。

  MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务  。
在复杂的应用场景下这种方式就不能满足需求了  。
为了打开事务,允许在COMMIT和ROLLBACK之前多条语句被执行,我们需要做以下两步:
1, 设置MySQL的autocommit属性为0,默认为1
2,使用START TRANSACTION语句显式的打开一个事务

  如果已经打开一个事务,则SET autocommit=0不会起作用,因为START TRANSACTION会隐式的提交session中所有当前的更改,结束已有的事务,并打开一个新的事务  。

  使用SET AUTOCOMMIT语句的存储过程例子:

  1. CREATE PROCEDURE tfer_funds      
  2.      (from_account int, to_account int, tfer_amount numeric(10,2))      
  3. BEGIN      
  4.      SET autocommit=0;      
  5.      
  6.      UPDATE account_balance SET balancebalance=balance-tfer_amount WHERE account_id=from_account;      
  7.      
  8.      UPDATE account_balance SET balancebalance=balance+tfer_amount WHERE account_id=to_account;      
  9.      
  10.      COMMIT;      
  11. END;    

  以上定义MySQL事务的方法介绍  。