例如我們要更新某一筆資料,使用悲觀鎖寫法
不囉唆,開始提供 PHP 範例寫法:
// 查出單筆的資料
$sqlA = "SELECT * FROM your_table_name1 WHERE u_id = " . $obj->id . " FOR UPDATE "; // $obj->id 是我自定義的變數
// 獲得資料庫鎖
if ($mysqli->begin_transaction(`MYSQLI_TRANS_START_READ_WRITE`) ){
$resultSet1 = $mysqli->query($sqlA);
$sqlA= "Update your_table_name1 SET column2 =2 WHERE u_id = " . $obj->id ;
$resultSet2= $mysqli->query($sqlA);
if ( !($mysqli->commit()) ) {
echo "完成更新時發生問題, 已終止後續執行\n";
$mysqli->close();
return false;
}
}
參考資料來源: 深入理解樂觀鎖與悲觀鎖 http://www.hollischuang.com/archives/934