在这种情况下可以使用序列生成器吗?

Is it possible to use sequence generator in this situation?

提问人:Jaydeep Patel 提问时间:4/15/2021 更新时间:4/15/2021 访问量:30

问:

我有下表结构

ITEM
| ID(Auto Inc)    | ORG_ID(FK to ORG)    | ITEM_ID               |
|-----------------|----------------------|-----------------------|
| 1               | 1                    | 1 (Initial Val for A) |
| 1               | 2                    | 1 (Initial Val for B) |
| 1               | 1                    | 2 (Incremented for A) |


ORG
| ID   | NAME      |
|------|-----------|
| 1    | A         |
| 2    | B         |

是否有任何可能使用任何生成器来管理item_id列。这不是 ITEM 表的 id 列。业务需求是按顺序管理item_id每个组织。

java mysql 休眠 JPA 序列

评论

0赞 Akina 4/15/2021
MySQL没有生成器。使用 BEFORE INSERT 触发器。
0赞 SternK 4/15/2021
@JaydeepPatel 也许会有所帮助。
0赞 Jaydeep Patel 4/15/2021
@SternK 它并不简单 它生成器。我需要基于ORG_ID值的生成器。 看看我上面的例子。
0赞 Jaydeep Patel 4/15/2021
@Akina 在查看触发器之前,我想看看 JPA 是否可以做到这一点

答:

0赞 Akina 4/15/2021 #1

您可以尝试使用下一个查询进行插入:

INSERT INTO item (org_id, item_id)
SELECT @org_id, COALESCE((SELECT 1 + MAX(item_id)
                          FROM item
                          WHERE org_id = @org_id), 1)

其中 是要插入的值。@org_id

问题:它可能会在发生并发插入时插入重复项。