SQLTransaction或Table Valued参数用于跨​​多个表的插入?

时间:2013-11-28 07:12:46

标签: .net sql sql-server database transactions

我有2个表,“TableA”表示项目详细信息,“表B”表示文件附件。

用于插入新项目详细信息记录(TableA中的1个新行,以及数据库中TableB中可能有多个行),这是一个更好的选择:

1)创建2个插入存储过程(每个表一个),并在应用程序层中处理事务 例如:

  

     

{

     
    

Connection.Open();

         

SqlTransaction trans transaction = Connection.BeginTransaction(IsolationLevel.Serializable);

         

//在此处插入项目记录(插入数据库中的TableA)

         

//在此处插入文件附件记录(插入数据库中的TableB)

         

器transaction.commit();

  
     

}

     

catch(Exception Ex)

     

{

     
    

trans.Rollback();

  
     

}

2)创建表值参数TVPFileAttachments并在一次操作中将所有内容传递到数据库中的1个单个存储过程(由存储过程处理的事务)

以这种方式更新多个表时,哪种标准做法更好?

1 个答案:

答案 0 :(得分:0)

在事务中创建2个插入。

BEGIN TRY
BEGIN TRAN
INSERT INTO ...
VALUES....
INSERT INTO ....
VALUES....
COMMIT TRAN
END TRY 
BEGIN CATCH
ROLLBACK TRAN
END CATCH