记录主表中缺少的 Postgresql 序列值

问题描述 投票:0回答:1

由于使用 PostgreSQL 上的序列作为表主键的默认值,导致 id 列出现间隙。当事务回滚时,序列值不会回滚,因此 id 列将不是连续的。我试图消除这些差距,但它似乎影响了性能。我现在的想法是记录那些丢失的 ID 以及错误消息和请求负载。因此,我很难获取数据库事务回滚时按序列生成的 ID。

请建议在函数回滚时从数据库获取丢失的序列 ID 的方法,以便我们可以记录它。

spring postgresql spring-boot hibernate sequence
1个回答
0
投票

我们通过以下方式解决了这个问题:

  1. 创建一个模拟对象
  2. 坚持然后获取它并存储在变量中
  3. 发送事件(完成后)
  4. 继续业务逻辑并更新模拟对象
  5. 当提交失败时,事件监听器将获取 id 并持久化它
© www.soinside.com 2019 - 2024. All rights reserved.