Как вставить игнорирование с более чем 100 входными значениями - PullRequest
0 голосов
/ 09 марта 2019

я изучаю спящий Java, нашел пример "вставить игнорировать",

Query query = getSession().createSQLQuery("INSERT IGNORE INTO TABLA (ID, VAR) VALUES (:id, :var)");
UUID id = UUID.randomUUID();
query.setParameter("id", id);
String var = "abcde";
query.setParameter("var", var);
query.executeUpdate();

Это будет "вставить игнорировать" 1 запись. У меня может быть 100+ var в качестве входных данных, но только 1 или 2 не будет в существующей таблице, я не знаю, какие из них.

Если я установил параметры 100 значений с помощью цикла, это может сработать. Но есть ли лучшее, может? учитывая, что мне, возможно, просто нужно вставить 1 или 2 из них действительно.

Или я должен спросить это: учитывая список из 100 строк var, найдите несколько, которых нет в таблице, без использования цикла.

1 Ответ

0 голосов
/ 09 марта 2019

Вы можете использовать функцию MySQL ON DUPLICATE KEY UPDATE.

Например:

INSERT INTO TABLA (ID, VAR) VALUES (1, 1), (2, 2), ... ON DUPLICATE KEY UPDATE ID=ID;

Я не знаком с java или hibernate, поэтому мой ответ является необработанным запросом.Если вам нужна помощь в определении точного синтаксиса, этот вопрос может быть хорошим ресурсом для него.

Также, вообще говоря, ON DUPLICATE KEY UPDATE намного безопаснее, чем INSERT IGNORE, потому что последнийбудет игнорировать все ошибки, тогда как первый будет игнорировать только дубликаты вставок.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...