当前位置:  开发笔记 > 编程语言 > 正文

Apache Derby:我怎么能"插入,如果不存在"?

如何解决《ApacheDerby:我怎么能"插入,如果不存在"?》经验,为你挑选了1个好方法。

我正在给Apache Derby,也就是JavaDB.在插入可能已存在的记录时,我似乎无法解决重复的关键问题.是否有相当于" insert if not exists"或" merge" 的Derby ?

同样,有没有办法做" drop table foo if exists" 这样的事情?



1> Snukker..:

我从未使用过apache derby,但是一个与数据库无关的通用解决方案如下:

要将值'a'和'b'插入到表foo中(使用名为A,B的列),但仅在值尚未存在的位置插入,请尝试类似

INSERT INTO foo (  
  SELECT 'a' as A, 'b' as B
  FROM foo  
  WHERE  
    A = 'a' AND B = 'b'  
  HAVING count(*)=0  
 )

这可能需要针对特定​​的dbms进行调整,但是想法是插入一个select的结果,该结果仅在存在non时才返回值.

这是一个有用的技巧,用于创建一个幂等的sql脚本(第二次运行时不会执行任何操作).但是,在生产代码中使用它时要小心,因为HAVING count(*)=0在大型表上可能会非常慢.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有