#swift #sqlite.swift
#swift #sqlite.swift
Вопрос:
У меня есть метод массовой вставки, который пытается вставить массив элементов в транзакцию. Однако у меня есть пользовательские ошибки, которые я создаю на основе передаваемых значений. Например, строки не могут быть пустыми (что является допустимым строковым значением для sqlite).
Как я мог бы откатить транзакцию, если я выдаю свою пользовательскую ошибку?
В настоящее время, когда возникает ошибка throw, эта операция вставки пропускается. Итак, если я добавляю 10 элементов, а 1 элемент содержит недопустимую пустую строку, моя транзакция вставляет 9 элементов.
https://gist.github.com/tinder-calebdavis/90b8658f6494e3f2836d9ab53391834c
Ответ №1:
Возможно, это не лучший ответ, но в итоге я запустил свои собственные проверки перед запуском транзакции.
Если моя проверка выдает ошибку, транзакция никогда не начнется.
Я рассматривал возможность добавления ограничения к моему столбцу или даже триггера, но мне было нелегко разобраться в синтаксисе для этого. Наличие ограничения или триггера было бы неплохо, потому что я мог бы получить фактическую ошибку SQL, вызывающую откат транзакции.