SQL 语句中 SQLITE 中的错误处理和回滚事务

Ism*_*ilS 4 sqlite

我正在通过调用ExecuteNonQuery使用 SQL 脚本更改多个 sqlite 表。我想在事务中执行此操作,并希望在出现任何故障时将其回滚。

我看了看,BEGIN TRANSACTION很明显我必须在ROLLBACK TRANSACTION出现任何问题时打电话。但我不知道这里怎么能尝试...CATCH (Transact-SQL)类型的东西。

注意:整个 Sql 脚本文件(除了需要在一个事务中触发的这几条语句之外,还包含许多其他语句)由 .ReadToEnd() 读取,然后立即执行。我想在 sql 脚本文件本身中处理这个问题,不想更改代码。

ral*_*.w. 5

请看一下SQLite 上的冲突条款

从开始交易开始

你必须添加ON CONFLICT ROLLBACK你的行动

最后提交交易;-)

  • 此答案没有考虑不适用“ON CONFLICT”的语句,例如 DROP、CREATE TABLE(整个语句,而不仅仅是列定义)等。指定的模式不能作为 TRY...CATCH 的一般替代品在 T-SQL 或主机环境/语言中的正确错误处理和事务回滚中。 (3认同)