preloader
軟體工程

PHP 在 MySQL 的悲觀鎖寫法

例如我們要更新某一筆資料,使用悲觀鎖寫法

不囉唆,開始提供 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