抛出自定义错误时如何回滚事务

How could I rollback a transaction when throwing custom errors

我有一个批量插入方法,它尝试在事务中插入一组项目。但是,我根据传入的值抛出自定义错误。例如,字符串不能为空(这是 sqlite 的有效字符串值)。

如果我抛出自定义错误,如何回滚事务?

目前,当抛出错误时,会跳过该插入操作。因此,如果我要添加 10 项,并且 1 项具有无效的空字符串,则我的事务将插入 9 项。

https://gist.github.com/tinder-calebdavis/90b8658f6494e3f2836d9ab53391834c

这可能不是最佳答案,但我在开始交易之前 运行 完成了自己的验证检查。

如果我的验证出现错误,交易将永远不会开始。

我考虑过在我的列中添加一个约束,甚至是一个触发器,但要弄清楚执行此操作的语法对我来说并不容易。有一个约束或触发器会很好,因为我可能会收到导致事务回滚的实际 SQL 错误。