H2 Java插入忽略-允许异常
我正在开发一个与H2数据库接口的java插件。我真正想要的是一个“Insert Ignore”语句;但是,我知道H2不支持这一点。我也知道合并,但这确实不是我想要的,如果记录存在,我不想更改它 我正在考虑的是运行insert并让重复密钥异常发生。但是,我不想让它填满我的日志文件。DB调用发生在我无法更改的导入类中。因此,我的问题是:H2 Java插入忽略-允许异常,java,exception,h2,Java,Exception,H2,我正在开发一个与H2数据库接口的java插件。我真正想要的是一个“Insert Ignore”语句;但是,我知道H2不支持这一点。我也知道合并,但这确实不是我想要的,如果记录存在,我不想更改它 我正在考虑的是运行insert并让重复密钥异常发生。但是,我不想让它填满我的日志文件。DB调用发生在我无法更改的导入类中。因此,我的问题是: 这样做合理吗?我不是一个让错误发生的人,但在这种情况下,这似乎是最好的方式(不应该发生那么多) 如何防止此异常影响我的日志文件?如果没有方法阻止堆栈中的异常,我可以
谢谢。一种解决方案是使用:
insert into test
select 1, 'Hello' from dual
where not exists(select * from test where id = 1)
这应该适用于所有数据库(双重部分除外;您可能需要创建自己的具有一行的虚拟表) 要禁用日志记录异常,请附加
;跟踪\u level\u file=0
到数据库URL:
jdbc:h2:~/test;trace_level_file=0
或运行SQL语句:
set trace_level_file 0
很好的解决方法-在等待时,已经通过两个单独的查询执行了类似的操作。尽管如此,我还是想知道Java异常的情况,我不想费心去测试它,但我不确定它是否会起作用(不管怎样,我给了你一些要点)。我指的例外是登录到应用程序中,而不是直接从h2。我会发布我的代码/日志,但这不是我要发布的代码。谢谢。“除了双部分,您可能需要创建一行自己的虚拟表”。那听起来很烦人。