並發存儲
發布時間: 2022-12-15 21:48:42
A. Oracle存儲過程並發問題
1.設立主鍵。根據唯一性資料庫自動判別。
2.笨的方法:建議採用信號量。
舉例如下:
create signal_flag (signal number(1));insert into signal_flag values(1);
在每次查詢表有無記錄前,加入語句
select signal from signal_flag where signal=1 for update;
select count(1) int var_cnt from tab1 ;
if var_cnt =0 then insert.....
endif;
commit;
B. 存儲過程如何實現存儲過程的並發執行
這個問題一般是數據鎖造成的,INSERT的時候一般不會遇到這種問題,你在A或者B存儲過程中查看一下,一定有UPDATE語句或者 SELECT FOR UPDATE語句,兩個並發的請求同時鎖一條記錄就會造成一條成功另一條失敗。
不過按照你的描述最大的可能性是另外一種情況,就是兩次INSERT插入的數據某個欄位是相同的值,好死不死的,這個相同值的欄位又設置了唯一索引或者約束,那麼當第一條記錄插入成功後第二條記錄就會必然失敗回滾。
C. 存儲過程並發,存儲過程在同一個時間裡面執行了多次,導致數據多次修改
這個問題顯然不應該去資料庫查,你最先應該看前端是否有重復提交的限制,或者直接在後台加安全鎖。
熱點內容
