我是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来保证数据库的完整性。
任何人都可以非常简单地解释一下吗?提前谢谢。
答案 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;