提问人:Vijaykumar Arumugam 提问时间:7/30/2023 更新时间:7/30/2023 访问量:32
选择“最大”,然后选择“增量”,然后选择“更新另一个 ROW Oracle - 并发问题”
Select Max then Increment & THEN Update another ROW Oracle - concurrent issue
问:
我们有一个要求,我们需要选择 MAX 值,然后递增,然后根据日期更新另一行,我在下面给出了示例
日期 | 名字 | 生成_Code |
---|---|---|
7 月 30 日 | John | CD001型 |
7 月 30 日 | 岩石 | CD002型 |
7 月 30 日 | 甲基苯丙胺 | CD003型 |
7 月 31 日 | John | CD001型 |
7 月 31 日 | 岩石 | CD002型 |
7 月 30 日 | 维 琪 | CD004型 |
7 月 30 日 | John | CD001型 |
我们在包中实现了打击逻辑
第 1 步:从表中选择 NVL(MAX (Generated_Code)、CD000) 基于日期
第 2 步:将其递增 1
步骤 3:更新新插入行的生成代码
特殊情况 - 如果同一日期再次出现相同的名称,那么我们使用相同的GENERATED_Code,请参阅上面的最后一行,我们在步骤之间进行了一些检查并实现了它。
代码工作原理示例 - 如果插入了日期:7 月 31 日广告名称 Arron 的新记录,则 1 - 获取 CD002,创建 - CD003,然后更新新插入的重新编码,如下所示
日期 | 名字 | 生成_Code |
---|---|---|
7 月 30 日 | John | CD001型 |
7 月 30 日 | 岩石 | CD002型 |
7 月 30 日 | 甲基苯丙胺 | CD003型 |
7 月 31 日 | John | CD001型 |
7 月 31 日 | 岩石 | CD002型 |
7 月 30 日 | 维 琪 | CD004型 |
7 月 30 日 | John | CD001型 |
7 月 31 日 | 亚伦 | CD003型 |
问题:并发,当从JAVA代码并发调用此包时,相同的GENERTED_code被应用于不同的名称两次,问题出在select MAX()值上。如何实现这个,序列是唯一的方法,我们不想为每个日期创建多个序列,如何处理?
答: 暂无答案
评论