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