【问题标题】:Is it possible to use sequence generator in this situation?在这种情况下可以使用序列生成器吗?
【发布时间】:2021-04-15 11:18:55
【问题描述】:

我有下表结构

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 顺序。

【问题讨论】:

  • MySQL 没有生成器。使用 BEFORE INSERT 触发器。
  • @JaydeepPatel 也许this 会有所帮助。
  • @SternK 它不是简单的它生成器。我需要基于 ORG_ID 值的生成器。看看我上面的例子。
  • @Akina 在查看触发器之前,我想看看 JPA 是否可以这样做

标签: java mysql hibernate jpa sequence


【解决方案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 是要插入的值。

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

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 2022-11-14
    • 2011-10-26
    • 2013-11-14
    • 2012-03-28
    • 1970-01-01
    • 2016-09-12
    • 2016-11-07
    相关资源
    最近更新 更多