|
很多新手在進(jìn)行項(xiàng)目過(guò)程中,會(huì)碰到這樣一種情況,如:論壇扣幣項(xiàng)目中,用戶(hù)支付論壇幣的時(shí)候如果突然斷網(wǎng)、電腦死機(jī)、停電、等其它自然災(zāi)害時(shí),導(dǎo)致本次交易沒(méi)有成功(即用戶(hù)的幣已經(jīng)扣掉了,但是服務(wù)器數(shù)據(jù)庫(kù)中沒(méi)有消費(fèi)記錄等其它情況),這種情況應(yīng)該怎么樣進(jìn)行處理呢?
在這個(gè)時(shí)候,我們可以用Mysql事務(wù)回滾來(lái)進(jìn)行處理,那代碼怎么寫(xiě)呢?
那下面我就來(lái)說(shuō)一說(shuō)這個(gè)mysql事務(wù)回滾應(yīng)該怎么處理。
首先MYSQL中只有INNODB和BDB類(lèi)型的數(shù)據(jù)表才能支持事務(wù)處理!其他的類(lèi)型是不支持的!
那如果,我們的數(shù)據(jù)表已經(jīng)存在,并且不是上面所說(shuō)的兩種類(lèi)型的話(huà),應(yīng)該怎么辦呢?
1、我可以去找一個(gè)叫MySQL-Front的軟件,里面能更改表類(lèi)型。
2、我們也可以通過(guò)SQL語(yǔ)句來(lái)更改,sql語(yǔ)句可以這樣寫(xiě):
復(fù)制代碼 代碼如下:
ALTER TABLE TABLENAME type = InnoDB;
將需要修類(lèi)型的表全更改完成后,我們可以到php文件中用代碼進(jìn)行測(cè)試了。
復(fù)制代碼 代碼如下:
mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO ...";
$sql2 = "INSERT INTO ...";
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '數(shù)據(jù)回滾。';
}
mysql_query("END");
看到這里,應(yīng)該知道怎么用php來(lái)處理mysql的事務(wù)回滾了吧。很簡(jiǎn)單吧!
php技術(shù):解析php mysql 事務(wù)處理回滾操作(附實(shí)例),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。