我具有带有多个记录的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具有记录。