mysql事務處理 例項

2021-05-23 02:01:02 字數 2288 閱讀 3758

事務處理機制在程式開發過程中有著非常重要的作用,它可以使整個系統更加安全,例如在銀行處理轉賬業務時,如果a賬戶中的金額剛被發出,而b賬戶還沒來得及接收就發生停電,這會給銀行和個人帶來很大的經濟損失。採用事務處理機制,一旦在轉賬過程中發生意外,則程式將回滾,不做任何處理。

mysql的事務處理主要有兩種方法

1.用begin,rollback,commit來實現

begin開始乙個事務

rollback事務回滾

commit 事務確認

2.直接用set來改變 mysql的自動提交模式

mysql預設是自動提交的,也就是你提交乙個query,就直接執行!可以通過

set autocommit = 0 禁止自動提交

set autocommit = 1 開啟自動提交

來實現事務的處理。

但 要注意當用set autocommit = 0 的時候,你以後所有的sql都將作為事務處理,直到你用commit確認或 rollback結束,注意當你結束這個事務的同時也開啟了新的事務!按第一種方法只將當前的做為乙個事務!

mysql只有 innodb和bdb型別的資料表才支援事務處理,其他的型別是不支援的!

mysql5.0 winxp下測試通過~  ^_^

mysql> use test;

database changed

mysql> create table `dbtest`(

-> id int(4)

-> ) type=innodb;

query ok, 0 rows affected, 1 warning (0.05 sec)

mysql> select * from dbtest

-> ;

empty set (0.01 sec)

mysql> begin;

query ok, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(5);

query ok, 1 row affected (0.00 sec)

mysql> insert into dbtest value(6);

query ok, 1 row affected (0.00 sec)

mysql> commit;

query ok, 0 rows affected (0.00 sec)

mysql> select * from dbtest;

+------+

| id   |

+------+

|    5 |

|    6 |

+------+

2 rows in set (0.00 sec)

mysql> begin;

query ok, 0 rows affected (0.00 sec)

mysql> insert into dbtest values(7);

query ok, 1 row affected (0.00 sec)

mysql> rollback;

query ok, 0 rows affected (0.00 sec)

mysql> select * from dbtest;

+------+

| id   |

+------+

|    5 |

|    6 |

+------+

2 rows in set (0.00 sec)

mysql>

實現事務的處理可以通過php預定義類mysqli的以下方 法實現。

autocommit(boolean):該方法用於限定查詢結果是否自動提交,如果該方法的引數為true則自動提交,如果引數為 false則關閉自動提交。mysql資料庫預設為自動提交。

rollback():利用mysqli類中的該方法可以實現事務的回滾。

commit(): 利用該方法可以實現提交所有查詢。

<?php

include_once("conn.php");

$id=$_get[id];

$conn->autocommit(false);

if(!$conn->query("delete from tb_sco where id='".$id."'"))

if(!$conn->query("delete from tb_stu where id='".$id."'"))

$conn->commit();

$conn->autocommit(true);

echo "ok"

?>

MySQL事務處理

start transaction,commit和rollback語法 start transaction begin work commit work and no chain no release rollback work and no chain no release set autocom...

mysql事務處理

mysql的事務處理主要有兩種方法 1.用begin,rollback,commit來實現 begin開始乙個事務 rollback事務回滾 commit 事務確認 2.直接用set來改變mysql的自動提交模式 mysql預設是自動提交的,也就是你提交乙個query,就直接執行!可以通過 set ...

mysql事務處理

事務都應該具備acid特徵。所謂acid是atomic 原子性 consistent 一致性 isolated 隔離性 durable 持續性 四個詞的首字母所寫,下面以 銀行轉帳 為例來分別說明一下它們的含義 1 原子性 組成事務處理的語句形成了乙個邏輯單元,不能只執行其中的一部分。換句話說,事務...