H2 Java插入忽略 - 允许异常

时间:2011-07-18 17:02:19

标签: java exception h2

我正在研究与H2数据库连接的java插件。我真正想要的是“插入忽略”声明;但是,我知道H2并不支持这一点。我也知道Merge,但这真的不是我想要的,如果记录存在我不想改变它。

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

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

1 个答案:

答案 0 :(得分:9)

一种解决方案是使用:

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