我正在研究与H2数据库连接的java插件。我真正想要的是“插入忽略”声明;但是,我知道H2并不支持这一点。我也知道Merge,但这真的不是我想要的,如果记录存在我不想改变它。
我正在考虑的是只运行插入并让重复键异常发生。但是,我不希望这填写我的日志文件。数据库调用发生在我无法更改的导入类中。所以我的问题是:
感谢。
答案 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