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

作者: april0910 (四月草)   2020-08-15 18:15:25
大家好
小弟才疏學淺,有個問題想了快一個星期想不透,上來向各位前輩請教;
事情是這樣的,在java中,為解決多個使用者同時操作造成的衝突問題,
會有個Thread可作為解決方案。但在PL SQL中,小弟翻找了一些資料,似
乎沒有類似Thrad的語法或解法。
目前情況假設(只能在SQL中尋找解決方案):
如果限定只用一個資料表與固定欄位數的話,是想到一個方法,就是在其
中一個欄位設置讀取符號,符號分為「已進入處理中」或「已處理完成」
,如果有人先進來,就先把這個欄位設為「已進入處理中」,處理完後,
會在把這欄位改為「已處理完成」;而凡是一進來這個程序的人都要先讀
取這個欄位是否有「已進入處理中」,有的話就在外面等個一秒在進來重
覆執行,直到這個欄位已不存在「已進入處理中」時,才會進來繼續執行
。如此周而復始,但在一進入的這個時間點,還是卡在”同時”進入時,
仍無法獲的解決…
請問這個就只能賭他就是只會差個幾毫秒嗎????
我實在想不出解法…拜託各位大神提點方向,謝謝Q_Q
作者: alihue (wanda wanda)   2020-08-15 18:20:00
RDBMS 原本就有交易機制,寫好交易邏輯就不用擔心這種事
作者: nyitalumnus (阿華)   2020-08-15 18:30:00
看一下RDBMS lock的章節吧!
作者: superpandal   2020-08-15 19:25:00
都是很不好的東西 費時費力 你可以找現成的超省時省力的
作者: ddoll288 (風兒卿卿)   2020-08-15 19:27:00
你可以用queue
作者: superpandal   2020-08-15 19:29:00
寫再多也不會變成什麼底牌 虛度光陰我說的是我自己當然更不會替別人寫什麼底牌
作者: marc47 (思樂冰)   2020-08-15 22:04:00
搞懂lock你就不會問這個問題了還有transaction
作者: april0910 (四月草)   2020-08-15 22:20:00
好的,謝謝大家的指點,感激不盡
作者: yanhua1012 (彥)   2020-08-15 22:32:00
transaction isolation
作者: airtsubasa (偽學姊)   2020-08-15 23:09:00
用該筆資料是不是最新的想法來實作? data a同時被甲,乙同時打開,但甲先存檔,乙後存,要如何避免乙後存,在乙存檔時顯示資料並非最新
作者: ga009900 (Lienfa)   2020-08-16 00:55:00
rowversion
作者: achaos (熱~~~~)   2020-08-16 12:05:00
使用select for update語法google查一下上述語法,應該可以解決你的問題
作者: x246libra (楓)   2020-08-16 16:53:00
暴力法,效能最差最安全,把隔離層級改 serialize
作者: alan3100 (BOSS)   2020-08-16 21:16:00
你找ACID相關來看 現在有其他更複雜的方式大幅縮短lock

Links booklink

Contact Us: admin [ a t ] ucptt.com