实现SQL事务的最佳位置是什么?

时间:2015-06-03 09:34:00

标签: c# sql-server transactions

实施SQL事务的最佳位置是什么?

  1. 在应用程序的业务逻辑或
  2. 在副存储过程中?
  3. 在业务逻辑代码中打开SQL事务是不好的做法吗?

    当我们处理复杂的业务逻辑时,例如批处理?

    请解释一下最好的方式和原因是什么?

2 个答案:

答案 0 :(得分:1)

在我看来,这取决于交易是否应涵盖多个电话。如果事务应该通过对数据库的完全一次调用完成,则可以选择将事务保留在过程中。 (请注意,在SQL Server中通过ADO.NET运行一个语句时,它们已经打包在一个事务中)

如果您需要使用相同的事务进行多次调用,您可以将其拉到客户端,或者创建一个为您调用基础过程的过程。

答案 1 :(得分:1)

我的意见首先是:存储过程。

在SP中使用事务非常简单,例如(MS SQL 2008R2)

 CREATE PROCEDURE P_MyProcedure
 AS
 BEGIN
    BEGIN TRANSACTION

    BEGIN TRY 

    select 'Do someting here' 

    END TRY

    BEGIN CATCH
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION;
        END
    END CATCH;

    IF @@TRANCOUNT > 0
        COMMIT TRANSACTION; 
END

然后您可以安全地编写业务逻辑。如果你愿意的话,还要关心其他级别的交易。