我给 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/