1

我编写了一个查询,它是一个复合查询,例如一个更新查询和一个插入查询。我正在使用 ExecuteScalar。是否有可能一个查询失败而另一个查询成功。如果其中一个查询错误,则将是全部失败或部分失败。

有人可以帮忙吗:)

4

2 回答 2

3

无论您如何调用它;对于复合操作,完全有可能第一个操作成功而第二个操作失败(例如,唯一键违规或外键违规)。如果您需要确保全有或全无,则Execute*使用事务围绕调用,并且仅在您知道一切正常时才提交。

您也可以在 SQL 级别创建事务,但如果您在 TSQL 中执行,您可以使用的工具更容易出错。它确实,为了给予应有的荣誉,避免了几次往返——但通常没有那么多,值得为语言而战。归根结底,SQL 是为良好的基于​​集合的 DML 操作而设计的——它在像执行流管理这样的程序化代码方面并不那么好。

于 2011-05-31T10:28:07.200 回答
0

是的,您的一个查询可能会失败而其他查询会执行。以及为什么不使用 ExecuteNonQuery 而不是 ExecuteScalar。对于这些类型的场景,最好使用“事务”

于 2011-05-31T10:28:53.983 回答