Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用事务在多个表中插入数据_C#_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

C# 如何使用事务在多个表中插入数据

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;

我的第一个表唯一键是子表中的外键,我在存储过程中使用事务,问题是当我使用事务时,插入的第一个表唯一键在提交查询之前没有显示任何值,对于第二个表的数据插入,我需要在第一个表中插入行的唯一键。 我将使用带有where子句的select查询。
但我的面试官说,告诉我实现这一点的其他方法,他说他不能为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
作为参数传递给存储过程。