我正在通过调用ExecuteNonQuery使用SQL脚本更改多个sqlite表。我想在事务中执行此操作,并希望在任何操作失败时将其回滚。
我看了BEGIN TRANSACTION
,很清楚,当出现问题时我必须致电ROLLBACK TRANSACTION
。但我不知道这里有什么TRY...CATCH (Transact-SQL)的东西。
注意:整个Sql脚本文件(除了这几个需要在一个事务中触发的语句之外还包含许多其他语句)由.ReadToEnd()读取,然后一次性执行。我想在sql脚本文件中处理这个问题,并且不想更改代码。
答案 0 :(得分:3)
从BEGIN TRANSACTION开始
您必须在行动中添加ON CONFLICT ROLLBACK
最后的COMMIT TRANSACTION; - )