我有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个单个存储过程(由存储过程处理的事务)
以这种方式更新多个表时,哪种标准做法更好?
答案 0 :(得分:0)
在事务中创建2个插入。
BEGIN TRY
BEGIN TRAN
INSERT INTO ...
VALUES....
INSERT INTO ....
VALUES....
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
END CATCH