定義MySQL事務(wù)的例子
定義MySQL事務(wù)應(yīng)該是每一個(gè)MySQL數(shù)據(jù)庫用戶都應(yīng)該會的,下面就將為您講解如何定義MySQL事務(wù),希望對您有所幫助。
MySQL默認(rèn)的行為是在每條SQL語句執(zhí)行后執(zhí)行一個(gè)COMMIT語句,從而有效的將每條語句獨(dú)立為一個(gè)事務(wù)。
在復(fù)雜的應(yīng)用場景下這種方式就不能滿足需求了。
為了打開事務(wù),允許在COMMIT和ROLLBACK之前多條語句被執(zhí)行,我們需要做以下兩步:
1, 設(shè)置MySQL的autocommit屬性為0,默認(rèn)為1
2,使用START TRANSACTION語句顯式的打開一個(gè)事務(wù)
如果已經(jīng)打開一個(gè)事務(wù),則SET autocommit=0不會起作用,因?yàn)镾TART TRANSACTION會隱式的提交session中所有當(dāng)前的更改,結(jié)束已有的事務(wù),并打開一個(gè)新的事務(wù)。
使用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事務(wù)的方法介紹。
【編輯推薦】