C# 如何使用事务在多个表中插入数据
我的第一个表唯一键是子表中的外键,我在存储过程中使用事务,问题是当我使用事务时,插入的第一个表唯一键在提交查询之前没有显示任何值,对于第二个表的数据插入,我需要在第一个表中插入行的唯一键。 我将使用带有where子句的select查询。C# 如何使用事务在多个表中插入数据,c#,sql,sql-server-2008,stored-procedures,C#,Sql,Sql Server 2008,Stored Procedures,我的第一个表唯一键是子表中的外键,我在存储过程中使用事务,问题是当我使用事务时,插入的第一个表唯一键在提交查询之前没有显示任何值,对于第二个表的数据插入,我需要在第一个表中插入行的唯一键。 我将使用带有where子句的select查询。 但我的面试官说,告诉我实现这一点的其他方法,他说他不能为100个表编写“select where”语句。在这种情况下,您将使用函数检索父表中新插入行的标识。您的脚本应该如下所示: begin transaction declare @parentId int;
但我的面试官说,告诉我实现这一点的其他方法,他说他不能为100个表编写“select where”语句。在这种情况下,您将使用函数检索父表中新插入行的标识。您的脚本应该如下所示:
begin transaction
declare @parentId int;
insert into ParentTable(Value1, Value2) values('1', '2')
select @parentId = SCOPE_IDENTITY()
insert into ChildTable(ParentId, Value) values(@parentId, '3')
commit
在这种情况下,您将使用函数检索父表中新插入行的标识。您的脚本应该如下所示:
begin transaction
declare @parentId int;
insert into ParentTable(Value1, Value2) values('1', '2')
select @parentId = SCOPE_IDENTITY()
insert into ChildTable(ParentId, Value) values(@parentId, '3')
commit
在这种情况下,您将使用函数检索父表中新插入行的标识。您的脚本应该如下所示:
begin transaction
declare @parentId int;
insert into ParentTable(Value1, Value2) values('1', '2')
select @parentId = SCOPE_IDENTITY()
insert into ChildTable(ParentId, Value) values(@parentId, '3')
commit
在这种情况下,您将使用函数检索父表中新插入行的标识。您的脚本应该如下所示:
begin transaction
declare @parentId int;
insert into ParentTable(Value1, Value2) values('1', '2')
select @parentId = SCOPE_IDENTITY()
insert into ChildTable(ParentId, Value) values(@parentId, '3')
commit
使用循环输入过程。给我看看你们的代码,也许我可以帮你们在程序中使用循环。给我看看你们的代码,也许我可以帮你们在程序中使用循环。给我看看你们的代码,也许我可以帮你们在程序中使用循环。给我看你的代码,也许我可以帮你哇,听起来不错,但当主键列上的isIdentity设置为false时,我可以使用此作用域标识吗。因为对于唯一主键,我使用自己的逻辑创建pk而不使用标识column@BRBHARDWAJ,如果使用自定义逻辑创建PK值,则不需要
scope\u identity()
。只需将@parentId
作为参数传递给您的存储过程。这听起来不错,但当主键列上的isIdentity设置为false时,我可以使用此作用域标识吗。因为对于唯一主键,我使用自己的逻辑创建pk而不使用标识column@BRBHARDWAJ,如果使用自定义逻辑创建PK值,则不需要scope\u identity()
。只需将@parentId
作为参数传递给您的存储过程。这听起来不错,但当主键列上的isIdentity设置为false时,我可以使用此作用域标识吗。因为对于唯一主键,我使用自己的逻辑创建pk而不使用标识column@BRBHARDWAJ,如果使用自定义逻辑创建PK值,则不需要scope\u identity()
。只需将@parentId
作为参数传递给您的存储过程。这听起来不错,但当主键列上的isIdentity设置为false时,我可以使用此作用域标识吗。因为对于唯一主键,我使用自己的逻辑创建pk而不使用标识column@BRBHARDWAJ,如果使用自定义逻辑创建PK值,则不需要scope\u identity()
。只需将@parentId
作为参数传递给存储过程。