Пакетная вставка с сгенерированными ключами обрабатывает дублирующую запись на уникальной
Я использую MySql с JDBC... ниже мое определение таблицы
CREATE TABLE `A` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`type` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unq` (`type`(50),`value`(50))
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
В настоящее время я использую оператор для пакетной вставки строк в эту таблицу с RETURN_GENERATED_KEYS
вариант для того, чтобы связать идентификатор с другой таблицей.
Я хочу иметь возможность выполнить эту операцию, но когда / если происходит DUPLICATE ENTRY (та же комбинация типа и значения), чтобы продолжить транзакцию, как будто ничего не происходит, но все же получить сгенерированные ключи, и если DUPLICATE ENTRY произойдет, извлечь существующий ключ,
Спасибо
1 ответ
Использование IGNORE
ключевое слово
INSET IGNORE ....
как указано в Mysql
Если вы используете ключевое слово IGNORE, ошибки, возникающие при выполнении оператора INSERT, вместо этого обрабатываются как предупреждения. Например, без IGNORE строка, которая дублирует существующий индекс UNIQUE или значение PRIMARY KEY в таблице, вызывает ошибку дубликата ключа, и оператор прерывается. С IGNORE строка все еще не вставлена, но ошибка не выдана.
альтернативный синтаксис