作者april0910 (四月草)
看板Soft_Job
标题[讨论] 请问PL SQL 有办法写Thread的功能吗?
时间Sat Aug 15 18:15:25 2020
大家好
小弟才疏学浅,有个问题想了快一个星期想不透,上来向各位前辈请教;
事情是这样的,在java中,为解决多个使用者同时操作造成的冲突问题,
会有个Thread可作为解决方案。但在PL SQL中,小弟翻找了一些资料,似
乎没有类似Thrad的语法或解法。
目前情况假设(只能在SQL中寻找解决方案):
如果限定只用一个资料表与固定栏位数的话,是想到一个方法,就是在其
中一个栏位设置读取符号,符号分为「已进入处理中」或「已处理完成」
,如果有人先进来,就先把这个栏位设为「已进入处理中」,处理完後,
会在把这栏位改为「已处理完成」;而凡是一进来这个程序的人都要先读
取这个栏位是否有「已进入处理中」,有的话就在外面等个一秒在进来重
覆执行,直到这个栏位已不存在「已进入处理中」时,才会进来继续执行
。如此周而复始,但在一进入的这个时间点,还是卡在”同时”进入时,
仍无法获的解决…
请问这个就只能赌他就是只会差个几毫秒吗????
我实在想不出解法…拜托各位大神提点方向,谢谢Q_Q
--
一山还有一山的歌
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.208.146 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1597486530.A.443.html
※ 编辑: april0910 (223.137.208.146 台湾), 08/15/2020 18:16:43
1F:推 alihue: RDBMS 原本就有交易机制,写好交易逻辑就不用担心这种事 08/15 18:20
2F:推 nyitalumnus: 看一下RDBMS lock的章节吧! 08/15 18:30
3F:→ superpandal: 都是很不好的东西 费时费力 你可以找现成的 08/15 19:25
4F:→ superpandal: 超省时省力的 08/15 19:25
5F:→ ddoll288: 你可以用queue 08/15 19:27
6F:→ superpandal: 写再多也不会变成什麽底牌 虚度光阴 08/15 19:29
7F:→ superpandal: 我说的是我自己 08/15 19:29
8F:→ superpandal: 当然更不会替别人写什麽底牌 08/15 19:33
9F:推 marc47: 搞懂lock你就不会问这个问题了 08/15 22:04
10F:→ marc47: 还有transaction 08/15 22:05
11F:→ april0910: 好的,谢谢大家的指点,感激不尽 08/15 22:20
12F:推 yanhua1012: transaction isolation 08/15 22:32
13F:→ airtsubasa: 用该笔资料是不是最新的想法来实作? data a同时被甲, 08/15 23:09
14F:→ airtsubasa: 乙同时打开,但甲先存档,乙後存,要如何避免乙後存, 08/15 23:09
15F:→ airtsubasa: 在乙存档时显示资料并非最新 08/15 23:09
16F:→ ga009900: rowversion 08/16 00:55
17F:→ achaos: 使用select for update语法 08/16 12:05
18F:→ achaos: google查一下上述语法,应该可以解决你的问题 08/16 12:20
19F:推 x246libra: 暴力法,效能最差最安全,把隔离层级改 serialize 08/16 16:53
20F:→ alan3100: 你找ACID相关来看 现在有其他更复杂的方式大幅缩短lock 08/16 21:16