将记录插入到多个表中,这些表在c#with Transaction中相互依赖

时间:2014-10-28 08:02:10

标签: c#

我是C#

的新手

我有两张桌子: 员工表(E_id(PK),first_name,Last_name,地址,DOB,电子邮件) BankDetail表(Id(PK),bank_name,Acc_no,E_id(FK))

两个PK都是自动增量。

现在的问题是,我需要同时插入两个表的数据。但是如果员工Id(E-id)在增量期间生成,那么我将如何获得该值以在同一操作中输入BankDetails E_id。我还需要在这里使用Transaction来保证数据库的完整性。

任何人都可以非常简单地解释一下吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为实现此目的的最佳方法是将操作包装在存储过程中。您可以使用SCOPE_IDENTITY获取以前添加的记录的ID和TRY-CATCH,以确保执行插入查询或不执行任何插入查询。

BEGIN TRANSACTION;

BEGIN TRY

   INSERT INTO Employee (first_name, Last_name, Address, DOB, Email)
   VALUES (@fname, @lame, ... etc)

   -- Get the last identity value inserted into an identity column in the same scope
   SET @E_Id = SCOPE_IDENTITY();

   INSERT INTO BankDetail(bank_name, Acc_no, E_id)
   VALUES (@bname, @ano, @E_id)

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

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;