[討論] 請問PL SQL 有辦法寫Thread的功能嗎?

看板Soft_Job作者 (四月草)時間5年前 (2020/08/15 18:15), 5年前編輯推噓5(5015)
留言20則, 12人參與, 5年前最新討論串1/1
大家好 小弟才疏學淺,有個問題想了快一個星期想不透,上來向各位前輩請教; 事情是這樣的,在java中,為解決多個使用者同時操作造成的衝突問題, 會有個Thread可作為解決方案。但在PL SQL中,小弟翻找了一些資料,似 乎沒有類似Thrad的語法或解法。 目前情況假設(只能在SQL中尋找解決方案): 如果限定只用一個資料表與固定欄位數的話,是想到一個方法,就是在其 中一個欄位設置讀取符號,符號分為「已進入處理中」或「已處理完成」 ,如果有人先進來,就先把這個欄位設為「已進入處理中」,處理完後, 會在把這欄位改為「已處理完成」;而凡是一進來這個程序的人都要先讀 取這個欄位是否有「已進入處理中」,有的話就在外面等個一秒在進來重 覆執行,直到這個欄位已不存在「已進入處理中」時,才會進來繼續執行 。如此周而復始,但在一進入的這個時間點,還是卡在”同時”進入時, 仍無法獲的解決… 請問這個就只能賭他就是只會差個幾毫秒嗎???? 我實在想不出解法…拜託各位大神提點方向,謝謝Q_Q -- 一山還有一山的歌 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.208.146 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1597486530.A.443.html ※ 編輯: april0910 (223.137.208.146 臺灣), 08/15/2020 18:16:43

08/15 18:20, 5年前 , 1F
RDBMS 原本就有交易機制,寫好交易邏輯就不用擔心這種事
08/15 18:20, 1F

08/15 18:30, 5年前 , 2F
看一下RDBMS lock的章節吧!
08/15 18:30, 2F

08/15 19:25, 5年前 , 3F
都是很不好的東西 費時費力 你可以找現成的
08/15 19:25, 3F

08/15 19:25, 5年前 , 4F
超省時省力的
08/15 19:25, 4F

08/15 19:27, 5年前 , 5F
你可以用queue
08/15 19:27, 5F

08/15 19:29, 5年前 , 6F
寫再多也不會變成什麼底牌 虛度光陰
08/15 19:29, 6F

08/15 19:29, 5年前 , 7F
我說的是我自己
08/15 19:29, 7F

08/15 19:33, 5年前 , 8F
當然更不會替別人寫什麼底牌
08/15 19:33, 8F

08/15 22:04, 5年前 , 9F
搞懂lock你就不會問這個問題了
08/15 22:04, 9F

08/15 22:05, 5年前 , 10F
還有transaction
08/15 22:05, 10F

08/15 22:20, 5年前 , 11F
好的,謝謝大家的指點,感激不盡
08/15 22:20, 11F

08/15 22:32, 5年前 , 12F
transaction isolation
08/15 22:32, 12F

08/15 23:09, 5年前 , 13F
用該筆資料是不是最新的想法來實作? data a同時被甲,
08/15 23:09, 13F

08/15 23:09, 5年前 , 14F
乙同時打開,但甲先存檔,乙後存,要如何避免乙後存,
08/15 23:09, 14F

08/15 23:09, 5年前 , 15F
在乙存檔時顯示資料並非最新
08/15 23:09, 15F

08/16 00:55, 5年前 , 16F
rowversion
08/16 00:55, 16F

08/16 12:05, 5年前 , 17F
使用select for update語法
08/16 12:05, 17F

08/16 12:20, 5年前 , 18F
google查一下上述語法,應該可以解決你的問題
08/16 12:20, 18F

08/16 16:53, 5年前 , 19F
暴力法,效能最差最安全,把隔離層級改 serialize
08/16 16:53, 19F

08/16 21:16, 5年前 , 20F
你找ACID相關來看 現在有其他更複雜的方式大幅縮短lock
08/16 21:16, 20F
文章代碼(AID): #1VDxN2H3 (Soft_Job)