在ecshop中使用MySQL事務

2021-09-03 02:35:08 字數 828 閱讀 5960

情況說明 :

分析:這種情況開始這是一次併發,因為實際重複扣錢的那兩筆的確是同一時間插入的,但是使用者餘額也相應的減少,這樣一來,這是一起重複提交資料的操作,form表單重複提交這種情況也是有的,但是我不想從前端控制,基本沒有辦法,就決定使用mysql事務從後台限制一下;

解決:直接上**:測試成功的重點是開啟mysql嚴格模式和使用者金額字段設定為無符號以及表結構是innodb

$db->query('set sql_mode="strict_trans_tables,no_auto_create_user,no_engine_substitution"'); //開啟mysql嚴格模式

$db->query('start transaction'); //開啟事務

/* 更新資料表 */

$sql = "update " . $ecs->table('suppliers_account') . " set " .

"admin_note = '$admin_note', " .

"is_paid = '$is_paid'," .

"admin_user = '$admin_user'," .

"paid_time = '$paid_time'" .

"where id = '$id'";

$res = $db->query($sql);

// 更新提現記錄

if (!$res)

if ($is_paid == 1)

} $db->query("commit"); //提交事務

後續思考:如何處理事務併發,事務併發問題和處理方式

在MySQL中使用memcached

這裡提供了一組mysql的udf函式,可以直接在sql中操作memcached。安裝比較簡單,需要安裝 libmemcached 0.12.tar.gz,然後安裝 memcached functions mysql 0.1.tar.gz就可以了。它的幫助檔案中提供了使用方法。只是需要設定ld lib...

在Python中使用MYSQL

緣由 近期在折騰乙個小東西須要抓取網上的頁面。然後進行解析。將結果放到 資料庫中。了解到python在這方面有優勢,便選用之。由於我有臺 server上面安裝有 mysql,自然使用之。在進行資料庫的這個操作過程中遇到了不少問題,這裡 記錄一下,大家共勉。python中mysql的呼叫 之後能夠通過...

在Django中使用mysql

在django中使用mongodb 1 可以選擇虛擬環境,進入開發環境的虛擬空間,不知道的請看傳送門 2 基本包的版本 django 1.11.8 mongoengine 0.15.0 3 安裝包 pip install mysqlclient4 建立乙個新的django專案,並指定到虛擬空間的py...