我正在用 C# 编写一个方法,它执行多个 SQL 命令并返回一个布尔值,以确定插入是否成功。我的问题是我想将此命令作为“全有或全无”命令执行。这意味着如果我想执行 3 个不同的命令并且第三个命令未正确执行,则前两个命令的更改不会提交。请问如何在 SQLServer 中执行此操作?
问问题
1132 次
2 回答
1
如果要从 C# 执行三个命令:
SqlTransaction tran = connection.BeginTransaction();
try
{
...exec first command and get result...
...exec second commmand and get result...
...exec third command and get result...
if (!firstResult || !secondResult || !thirdResult)
throw new Exception();
tran.Commit();
}
catch
{
tran.Rollback();
}
如果要通过调用存储过程在 SQL Server 中执行这三个命令,则使用:
BEGIN TRANSACTION
cmd1
cmd2
cmd3
IF @Success = 1 THEN
COMMIT TRANSATION
ELSE
ROLLBACK TRANSACTION
您还可以在 SQL 中使用 try..catch 块来捕获异常并在发生错误时回滚事务。
于 2013-04-16T20:19:06.220 回答
0
您正在搜索一个事务,它将许多 SQL 查询(通常是 INSERTS、UPDATES 或 DELETES)组合到一个工作单元中,您应该用 BEGIN TRAN(在开头)和 COMMIT TRAN(在结尾)包围您的查询。 SQL 服务器事务
于 2013-04-16T20:19:53.357 回答