实施SQL事务的最佳位置是什么?
在业务逻辑代码中打开SQL事务是不好的做法吗?
当我们处理复杂的业务逻辑时,例如批处理?
请解释一下最好的方式和原因是什么?
答案 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
然后您可以安全地编写业务逻辑。如果你愿意的话,还要关心其他级别的交易。