mysql 電商 MYSQL 事務處理

2021-10-17 22:43:02 字數 2065 閱讀 7385

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

by-xiao醬沫

@author: [email protected] @datetime: 2016-09-09 22:54:20

1、用begin,rollback,commit來實現

begin/start transaction    開始乙個事務

rollback 事務回滾

commit 事務確認

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

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

set autocommit=0 禁止自動提交

set autocommit=1 開啟自動提交

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

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

drop table if exists `goods`;

create table `goods` (

`gid` mediumint(8) unsigned  not null comment '//商品編號',

`name` varchar(20) not null comment '//商品名',

`store`    smallint not null comment '//庫存'

)engine=innodb  default charset=utf8 ;

/********************** 事物使用示例  1 ***************/

$conn = mysql_connect('localhost','root','panbiao') or die ("資料連線錯誤!!!");

mysql_select_db('test',$conn);

mysql_query("set names 'gbk'"); //使用gbk中文編碼;

//開始乙個事務

mysql_query("begin"); //或者mysql_query("start transaction");

$sql = "insert into `user` (`id`, `username`, `***`) values (null, 'test1', '0')";

$sql2 = "insert into `user` (`did`, `username`, `***`) values (null, 'test1', '0')";//這條我故意寫錯

$res = mysql_query($sql);

$res1 = mysql_query($sql2);

if($res && $res1)elseelse where name='zhangsan'";

$result=$mysqli->query($sql);

if(!$result)elseelse where name='lisi1'";

$result=$mysqli->query($sql);

if(!$result)elseelseelsecatch(pdoexception $e) where id=1";

$affected_rows=$pdo->exec($sql);

if(!$affected_rows)  throw new pdoexception("張三轉出失敗");//拋出新異常

$sql="update zhanghao set price=price+ where id=3";

$affected_rows=$pdo->exec($sql);

if(!$affected_rows)  throw new pdoexception("向李四轉入失敗");//拋出新異常

echo "交易成功!";

$pdo->commit();//提交

}catch(pdoexception $e)else{

echo '失敗!';

mysql_query("unlock tables");//解除鎖定

mysql業務資料庫回退 MySQL 事務處理

事務 一組sql語句操作單元,組內所有sql語句,完成乙個業務。若整組成功,意味著組內的全部操作都成功 反之,若其中任何一條語句失敗,意味著整個操作都失敗。操作失敗,意味著整個過程都是沒有意義的,應使資料庫回到操作前的初始狀態。point 1.失敗後,能回到開始位置 2.成功之前,其他使用者 程序 ...

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 ...