Я никогда не использовал 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
)
Для этого может потребоваться настройка для конкретной базы данных, но идея заключается в том, чтобы вставить результат выбора, который возвращает значения, только если они не являются.
Это полезный трюк для создания идемпотентного SQL-скрипта (тот, который ничего не делает при втором запуске). Однако будьте осторожны при использовании этого в производственном коде, поскольку HAVING count(*)=0
может быть очень медленным на больших таблицах.