发布时间:2010-10-11 09:25 来源:未知
定义MySQL事务应该是每一个MySQL数据库用户都应该会的,下面就将为您讲解如何定义MySQL事务,希望对您有所帮助。
MySQL默认的行为是在每条SQL语句执行后执行一个COMMIT语句,从而有效的将每条语句独立为一个事务。
在复杂的应用场景下这种方式就不能满足需求了。
为了打开事务,允许在COMMIT和ROLLBACK之前多条语句被执行,我们需要做以下两步:
1, 设置MySQL的autocommit属性为0,默认为1
2,使用START TRANSACTION语句显式的打开一个事务
如果已经打开一个事务,则SET autocommit=0不会起作用,因为START TRANSACTION会隐式的提交session中所有当前的更改,结束已有的事务,并打开一个新的事务。
使用SET AUTOCOMMIT语句的存储过程例子:
CREATE PROCEDURE tfer_funds (from_account int, to_account int, tfer_amount numeric(10,2)) BEGIN SET autocommit=0; UPDATE account_balance SET balancebalance=balance-tfer_amount WHERE account_id=from_account; UPDATE account_balance SET balancebalance=balance+tfer_amount WHERE account_id=to_account; COMMIT; END;
以上定义MySQL事务的方法介绍。