开发者

H2 Java Insert ignore - allow exception

开发者 https://www.devze.com 2023-03-20 22:27 出处:网络
I am working on a java plugin interfacing with an H2 database. What I really want is an \"Insert Ignore\" statement; however, I\'m aware that H2 doesn\'t support this. I am also aware of Merge, but th

I am working on a java plugin interfacing with an H2 database. What I really want is an "Insert Ignore" statement; however, I'm aware that H2 doesn't support this. I am also aware of Merge, but this is really not wha开发者_如何学编程t I want, if the record exists I don't want to change it.

What I am considering is to just run the insert and let the duplicate key exception happen. However, I don't want this to fill my log file. The DB call happens in an imported class that I can't change. So my questions are:

  1. Is this a reasonable thing to do? I'm not one for letting errors happen, but this seems like the best way in this case (it should not happen all that much).
  2. How can I keep this exception from hitting my log file? If there isn't a way to block exceptions down the stack, can I redirect the output of the stack trace that is output?

Thanks.


One solution is to use:

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

This should work for all databases (except for the dual part; you may need to create your own dummy table with one row).

To disable logging exceptions, append ;trace_level_file=0 to the database URL:

jdbc:h2:~/test;trace_level_file=0

or run the SQL statement:

set trace_level_file 0
0

精彩评论

暂无评论...
验证码 换一张
取 消