gpt4 book ai didi

java - JooQ 中的 DuplicateKeyException

转载 作者:行者123 更新时间:2023-12-01 23:57:13 24 4
gpt4 key购买 nike

我正在使用 JooQ 在 Aurora MySQL 上执行 CRUD 操作。

我有以下情况:

  1. 如果由于重复键异常导致插入失败,则再次重试相同的操作,否则忽略该异常。
  2. 如果插入失败,则在满足条件的情况下更新记录。

有没有办法只捕获 DuplicateKeyException?JooQ 正在抛出 DataAccessException 异常。

启用OnDuplicateKeyUpdate后,如果记录存在,它似乎会盲目更新数据库中的记录。我的用例是如果记录存在于数据库中,则在满足更新条件时更新记录。

我可以在两次单独的插入和更新调用中做到这一点,但是有什么方法可以在单个调用中做到这一点吗?

谢谢!!

最佳答案

您的问题中有两个问题:

Is there any way to catch DuplicateKeyException only? JooQ is throwing exception as DataAccessException.

是的,当然。 jOOQ 不像 JDBC 那样为单个错误提供单独的异常类型,但它仍然:

On enabling OnDuplicateKeyUpdate, it seems that if the record exist it will blindly update the record in database. My use case is if the record exist in database then update the record if the update conditions are met.

您可以在 ON DUPLICATE KEY UPDATESET 子句中对更新条件进行编码:

INSERT INTO t (id, value)
VALUES (1, 2)
ON DUPLICATE KEY UPDATE SET
value = CASE WHEN value = 2 THEN 3 ELSE value END

在上面的示例中,仅当 value2 时,UPDATE 子句才会将其更新为 3

关于java - JooQ 中的 DuplicateKeyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53518213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com