H2 Java插入忽略 – 允许exception
我正在开发一个与H2数据库连接的java插件。 我真正想要的是“插入忽略”声明; 但是,我知道H2并不支持这一点。 我也知道Merge,但这真的不是我想要的,如果记录存在我不想改变它。
我正在考虑的是只运行插入并让重复键exception发生。 但是,我不希望这填充我的日志文件。 数据库调用发生在我无法更改的导入类中。 所以我的问题是:
- 这是一件合理的事吗? 我不是一个让错误发生的人,但这似乎是这种情况下最好的方式(它不应该发生那么多)。
- 如何防止此exception命中我的日志文件? 如果没有办法阻止堆栈中的exception,我可以重定向输出的堆栈跟踪的输出吗?
谢谢。
一种解决方案是使用:
insert into test select 1, 'Hello' from dual where not exists(select * from test where id = 1)
这适用于所有数据库(双部分除外;您可能需要创建自己的虚拟表,其中包含一行)。
要禁用日志记录exception,请将;trace_level_file=0
附加到数据库URL:
jdbc:h2:~/test;trace_level_file=0
或运行SQL语句:
set trace_level_file 0