Получаване на стойност SCOPE_IDENTITY при вмъкване на групови записи за SQL TableType

Имам следната структура на таблицата, като за удобство маркирам само отделни колони

  • Table_A (Id, Name, Desc)
  • Table_1 (Id това е колона за самоличност, Name....)
  • Table_2 (Id това е колона за самоличност, Table_A_Id, Table_1_Id)

Връзката между Таблица_1 и Таблица_2 е 1...*

Сега създадох тип таблица за Table_A, наречен TType_Table_A (която съдържа само Id като колона и от моето C# приложение изпращам множество записи). Постигнах тази функционалност за групово вмъкване според желанието.

Това, от което се нуждая, е, когато вмъквам записи в Table_2 от TType_Table_A да речем с изрази по-долу, бих искал да уловя Id от Table_2 за всеки вмъкнат запис

declare @count int = (select count(*) from @TType_Table_A); --a variable declared for TType_Table_A

if(@count > 0)
  begin
    insert into Table_2(Table_A_Id,Table_1_Id)
    SELECT @SomeValue, @SomeValueAsParameter FROM @TType_Table_A;
  end;

Сега кажете, че ако са вмъкнати 2 записа, бих искал да уловя Id за всеки от тези 2 записа.

Всеки принос/помощ се оценява

Това е, което знам как може да се постигне, но искам да намаля DB извикванията от моето приложение или потребителски курсор в съхранена процедура

Вмъкнете запис в Table_1 и върнете обратно Id Loop.....чрез записи и вмъкнете запис в Table_2 и върнете обратно ID

OR

Използвайте курсора в съхранена процедура, когато вмъквате/избирате от TableType


person Mr. Imish    schedule 24.06.2013    source източник


Отговори (1)


Предполагам, че това е Sql сървър? След това можете да използвате клаузата OUTPUT, така:

declare @NewId table (MyNewId INT) 

 insert into Table_2(Table_A_Id,Table_1_Id)
 output INSERTED.MyNewId INTO @TempTable(MyNewID)
 SELECT SomeValue, SomeValueAsParameter FROM @TType_Table_A;

 SELECT * FROM @NewId
person Steve D    schedule 24.06.2013