SQL从一个TVP插入两个表中,使用第一表的范围标识



我具有带有多个记录的SQL TVP对象(例如2个记录(。我需要将这些记录插入两个几乎相同的表中,唯一的区别是,第二个表具有另一列,这是外键指向第一表。因此,它应该循环tvp记录并一一插入两个表中,但是在第一表中获取插入记录的scope_identity((并将其用于第二个表中的记录。

第一迭代

  • 插入第一表
  • 获取插入记录的scope_identity((
  • 插入第二个表(使用第一个表格范围的压痕以填充其他列(

等等,取决于TVP中的记录。

我该如何实现?

显然我已经排除了大量代码,因为我们没有您的列和表名称等。a子句和循环时。

Declare @Var1 Int
Declare @YourTVP YourTVPName
Declare @RowCounter Int = 1

While (1=1)
Insert Into YourTable1 (Column1, ...)
Select (Column1, ...) 
From @YourTVP
Where @RowCounter = SomeIDColumn
@Var1 = Select @@SCOPE_IDENTITY()

Insert Into YourTable2 (Column1, ...)
(@Var1, ...)
If (Some logic to Break your While loop)
Break
Else @RowCounter = @RowCounter + 1
End

好吧,让我更加清楚。我将举例说明示例::

  • 我的TVP(让它名称为pertonvp(包含名称和姓氏列,并假设Persontvp有两个记录。

  • 我有两个桌子,人和personextra。人表具有ID,名称和姓氏列,并且PersoneXtra具有相同的列 一个附加列的PersyId。

我需要将数据插入到这两个表中。流应该是:

  • 从Persontvp中记录并插入人表
  • 获取插入记录的scope_identity(ID列的值(
  • 将相同的记录插入personextra表中,并使用scope_identity((用于persyid列(附加列(

等等,只要persontvp具有记录。

相关内容

  • 没有找到相关文章

最新更新