SQL: как вставить данные из одной таблицы и вывести во временную таблицу с дополнительным значением из первой таблицы

Я могу использовать ключевое слово OUTPUT оператора вставки для вставки новых данных в таблицу и вывода во временную таблицу.

Входная таблица, которая должна быть вставлена ​​в другую таблицу, имеет идентификатор, который мне нужно передать во временную таблицу, но не в таблицу, в которую я собираюсь вставить. Эта временная таблица позже должна будет использоваться для дополнительной вставки в другую таблицу.

INSERT INTO table1 (Name, Age)
OUTPUT inserted.Id, User.Id (??) INTO TemporaryTable
SELECT Name, Age FROM User

Есть ли способ сделать это? Потому что для следующей вставки потребуется новый table1.Id с User.Id, чтобы я мог перенести некоторые данные.


person LittleFunny    schedule 03.07.2018    source источник


Ответы (2)


Вместо использования временной таблицы вы можете использовать переменную, чтобы она не занимала больше памяти.

create table table1 
(
id int NOT NULL,
,name varchar(50)
,age int,
 PRIMARY KEY (id)
)

insert into table1 (name,age) values ('name', 10)                          

declare @extracolumn as int =  scope_identity() 
select @extracolumn 

используйте этот @extracolumn в следующей операции вставки.

person sunnykachwala    schedule 03.07.2018

Включили ли вы дополнительный столбец в схему временной таблицы?

create table table1 
(
id int
,name varchar(50)
,age int
)

declare @TemporaryTable table -- or Create table #TemporaryTable
(                             
  id int,                     
  userid int -- defining the extra column                 
);                            

declare @extracolumn as int = 100; 
-- or declare @extracolumn as int = (select value from table where condition)
-- note that subqueries cannot be added directly in the output clause
-- so need to declare and set a variable that holds the value

insert into table1
output  inserted.id,@extracolumn into  @TemporaryTable -- or #TemporaryTable
values(1,'name',10)

select * from @TemporaryTable

Выход

id  userid
1   100
person Sharad Venkataraman    schedule 03.07.2018