儲存過程裡面怎麼處理併發啊

2021-07-05 01:08:26 字數 776 閱讀 1237

現在我的card表裡的count為8 表示有8張卡  如果我有10個併發執行緒去呼叫  最後的結果是card表count為0  但是mycard表 會有10條記錄 

就是10個人搶8張卡 結果10個人都搶到了

declare update_count int;

declare tmp_update_count int default 0;

declare t_error integer default 0;

declare temp int;

declare continue handler for sqlexception set t_error = 1;

start transaction;

update card set count = count-1 where count >= 1 and cardid = cardid;

select row_count() into update_count;

select sleep(1) into temp;

if update_count > 0 then 

select row_count() into tmp_update_count;

end if;

if t_error = 1 then 

set tmp_update_count = 0;

rollback;

else

commit;

end if

select tmp_update_count as update_count;

Outlook裡面的 dbx檔案怎麼開啟啊

太傻超級論壇 數碼生活 dbx檔案怎麼開啟啊,請教各位了!2004 6 2 16 30zmd100 dbx檔案怎麼開啟啊,請教各位了!dbx檔案怎麼開啟啊,請教各位了!2004 6 2 18 50chinesebai 是不是outlook express的資料檔案呀 開啟幹什麼用?好象只能轉換吧 2...

儲存過程裡面使用in變數列表異常的處理

在寫乙個儲存過程的時候,由於需要用到類似 select id,name from tablename where id in id1,id2,id3.的查詢語句,同時括號裡面的變數是拼接得到的,當時沒有多想,直接將儲存過程寫成類似select id,name from tablename where...

怎麼處理高併發

處理高併發有六種方法 1 系統拆分,將乙個系統拆分為多個子系統,用dubbo來搞。然後每個系統連乙個資料庫,這樣本來就乙個庫,現在多個資料庫,這樣就可以抗高併發。2 快取,必須得用快取。大部分的高併發場景,都是讀多寫少,那你完全可以在資料庫和快取裡都寫乙份,然後讀的時候大量走快取不就得了。畢竟人家r...