我编写了一个查询,它是一个复合查询,就像一个更新查询和一个插入查询。 我正在使用ExecuteScalar。 是否有可能一个查询失败而另一个查询将成功。 如果其中一个查询错误,那将是一个完整的失败或部分失败。
有人可以帮助:)
答案 0 :(得分:3)
无论如何你调用它;对于复合操作,完全有可能第一个操作将成功,第二个操作将失败(例如,唯一键冲突或外键冲突)。如果你需要确保全部或全部,那么用事务将Execute*
的呼叫包围起来,只有当你知道它全部有用时才提交。
您还可以在SQL级别创建事务,但如果您在TSQL中执行此操作,则可以使用的工具更容易出错。为了给予应有的信任,它确实避免了一些往返 - 但通常不是那么多,以至于值得与语言作斗争。最终,SQL是为良好的基于集合的DML操作而设计的 - 它在执行流程管理等更多过程代码方面并不是那么好。
答案 1 :(得分:0)
是的,您的一个查询失败并且其他执行失败。为什么不使用ExecuteNonQuery而不是ExecuteScalar。您可以更好地为这些类型的场景使用“交易”