实现多个相关联表插入数据的一些方法

来源:互联网 发布:java轨迹预测算法 编辑:程序博客网 时间:2024/05/16 18:45

今晚遇到一个问题,就是往多个相关联表里插入数据的问题,在网上找了一下,实现的方法很多,总结了几个实现方法,眼睛好困,中午没睡,想睡觉……不管用哪一个方法,注意插入的顺序即可……

一、采用事务的方法:
 SqlConnection conn = Database.ReturnConn(); 
         SqlTransaction trans = conn.BeginTransaction(); 
         try 
         { 
             //插入1条记录 
               //插入1条记录 
               //插入1条记录    
             trans.Commit(); 
         } 
         catch () 
         { 
             trans.Rollback(); 
         } 
         finally 
         { 
             conn.Close(); 
         } 
二、存储过程的方法:
declare @nID int
insert into Tb1(....) values(...)
select @nID=@@identity
insert into Tb2(ParentID,...) values(@nID,...)
select @nID=@@identity
insert into Tb3(ParentID,...) values(@nID,...)
如果担心两个表的数据不同步,比如可能插入了table1后,但是出错了,表1有数据但表2没有,你可以把这2条语句放一个事务里,在.net代码里使用事务,
首先引用System.Transactions命名空间(要先添加System.Transactions的引用)
using (TransactionScope ts = new TransactionScope())
            {
                //写入数据
                ts.Complete();
            }