gpt4 book ai didi

java - H2 Java Insert ignore - 允许异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:48 28 4
gpt4 key购买 nike

我正在开发一个与 H2 数据库接口(interface)的 java 插件。我真正想要的是一个“Insert Ignore”语句;但是,我知道 H2 不支持这一点。我也知道合并,但这真的不是我想要的,如果记录存在我不想改变它。

我正在考虑的是只运行插入并让重复键异常发生。但是,我不希望它填满我的日志文件。数据库调用发生在我无法更改的导入类中。所以我的问题是:

  1. 这样做合理吗?我不是一个允许错误发生的人,但这似乎是这种情况下的最佳方式(它不应该发生那么多)。
  2. 如何防止这个异常出现在我的日志文件中?如果没有办法在堆栈中阻止异常,我可以重定向输出的堆栈跟踪的输出吗?

谢谢。

最佳答案

一种解决方案是使用:

insert into test 
select 1, 'Hello' from dual
where not exists(select * from test where id = 1)

这应该适用于所有数据库(双重部分除外;您可能需要创建自己的一行虚拟表)。

要禁用日志记录异常,请将 ;trace_level_file=0 附加到数据库 URL:

jdbc:h2:~/test;trace_level_file=0

或者运行SQL语句:

set trace_level_file 0

关于java - H2 Java Insert ignore - 允许异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736518/

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