java - Apache Derby : how can I do "insert if not exists"?

标签 java sql derby

我给 Apache Derby , 又名 JavaDB旋转。插入可能已经存在的记录时,我似乎无法解决重复键问题。是否有等同于“insert if not exists”或“merge”的 Derby?

同样,有没有办法做类似“drop table foo if exists”这样的事情?

最佳答案

我从未使用过 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 进行调整,但我们的想法是插入一个只在没有值时才返回值的选择结果。

这是创建幂等 sql 脚本(第二次运行时什么都不做)的有用技巧。但是,在生产代码中使用它时要小心,因为 HAVING count(*)=0 在大型表上可能会非常慢。

关于java - Apache Derby : how can I do "insert if not exists"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407688/

相关文章:

mysql - 新表字段上的 WordPress user_login 字段

java - Derby :相当于 CONCAT

java - 在 spring 中使用 JDBC 连接到 derby 数据库

Java - 如何根据请求打印文件中的数据?

java - 上传文件时处理网络问题

java - 正则表达式中的匹配组

java - 用于 Java 的轻量级 REST 库

php - SQL 从 2 个不同的数据库检索数据

sql - DB2 SQL - 可以在不对每行值使用 "or"的情况下查询值列表吗?

java - Netbeans Derby 连接上的 TableView 不存在异常