#sql #ruby #sequel
Вопрос:
Я знаю Dataset#multi_insert
и Dataset#insert
. вставляет несколько, но есть ли опция, которая может пропустить эту конкретную вставку, когда активируется уникальная проверка ограничения
Ответ №1:
Вы можете использовать insert_conflict
метод.
«Обрабатывайте нарушения уникальности при вставке, обновляя конфликтующую строку, используя ПРИ КОНФЛИКТЕ. Без вариантов, использование В КОНФЛИКТЕ НИЧЕГО НЕ ДЕЛАЕТ».
DB[:table].insert_conflict.insert(a: 1, b: 2)
# INSERT INTO TABLE (a, b) VALUES (1, 2)
# ON CONFLICT DO NOTHING
Он также работает с multi_insert
DB[:table].insert_conflict.multi_insert([{a: 1, b: 2}, {a: 3, b: 4}])
# INSERT INTO TABLE (a, b) VALUES (1, 2), (3, 4)
# ON CONFLICT DO NOTHING