PHP 對 mysql 的事務處理

mysql>mysql事務處理php代碼實現事務的處理能夠經過PHP預約義類mysqli的如下方法實現。
autocommit(boolean):該方法用於限定查詢結果是否自動提交,若是該方法的參數爲true則自動提交,若是參數爲false則關閉自動提交。MySQL數據庫默認爲自動提交。
rollback():利用mysqli類中的該方法能夠實現事務的回滾。

commit():利用該方法能夠實現提交全部查詢。 javascript


<?php
include_once("conn.php");

$id=$_GET[id];
$conn->autocommit(false);   // 設置爲手動提交事務
if(!$conn->query("delete from tb_sco where id='".$id."'"))
{
$conn->rollback();   // 提交事務//發生錯誤 事務回滾
}
if(!$conn->query("delete from tb_stu where id='".$id."'"))
{
$conn->rollback();  //發生錯誤 事務回滾
}
$conn->commit();   //提交事務
$conn->autocommit(true);    // 設置事務爲手動
echo "ok"

?> php

列二 java

<?php mysql

require('connectDB.php'); //創建數據庫鏈接
mssql_query("BEGIN TRANSACTION DEPS02_DEL"); //開始事務
$delete_dep_sql="DELETE FROM TBLDEPARTMENT WHERE DEPTID='{$_GET[deptid]}'";
// echo $delete_dep_sql."<br>";
mssql_query($delete_dep_sql); //操做數據庫
// var_dump($del_result);
$delete_result = mssql_query("select @@ROWCOUNT as id");
$delete_info = mssql_fetch_array($delete_result);
$delete_rows = $delete_info[0];
// var_dump($delete_rows);
mssql_free_result($delete_result);
echo "<script language=javascript>";
if(true){ //判斷是否回滾提交
mssql_query("COMMIT TRANSACTION DEPS02_DEL"); //提交事務
echo "alert('delete success!');";
}else{
mssql_query("ROLLBACK TRANSACTION DEPS02_DEL"); //回滾事務
echo "alert('delete faile!');";
}
echo "</script>";mssql_close();

?> sql


php+mssql 的事務處理主要是以mssql的語言實現,php只是給其提供個與數據庫對話的空間,若是以{BEGIN TRANSACTION }開始,後續的mssql就在該事務期間裏,等待提交或回滾得指令;若是不在事務期間內就每一個語句直接操做數據庫。 數據庫


   原文複製與  http://hi.baidu.com/mevyen/item/51f413945d2295d81a49dfac
相關文章
相關標籤/搜索