vipulm99 Ответов: 2

Как вставить значение столбца идентификатора из одной таблицы в другую с помощью временной таблицы.


Привет,
Я не могу вставить значение столбца identity из одной таблицы в другую таблицу при вставке во вторую таблицу из временной таблицы. Во второй таблице есть условие, что несколько столбцов не позволяют вставлять нулевые значения.
ЭКС:-
INSERT  INTO table1( firstName,lastName ) SELECT  firstName,lastName FROM    #tempRuleMaster;   

INSERT  INTO table2( id, firstName, lastName )SELECT  id, firstName,lastName FROM    #tempRuleDetails

столбец id в таблице 2 - это столбец identity из таблицы 1 & its a bulk insert kind of condition.

Что я уже пробовал:

Я уже пробовал использовать output во время вставки в table1 & its not working.

2 Ответов

Рейтинг:
1

Wendelius

Значение столбца идентификатора обычно генерируется автоматически, поэтому его нельзя устанавливать. Таким образом, в основном ваш запрос 2 должен быть без идентификации, например

INSERT  INTO table2 (firstName, lastName )
SELECT  firstName,lastName FROM    #tempRuleDetails

Для получения дополнительной информации см. IDENTITY (Property) (Transact-SQL)[^]

В редких случаях, когда вам действительно нужно установить значение столбца идентификатора, вы можете использовать SET IDENTITY_INSERT (Transact-SQL)[^ Но, как уже было сказано, это обычно не требуется.


Рейтинг:
1

manu_dhobale

Используйте параметр identity_insert

INSERT  INTO table1( firstName,lastName ) SELECT  firstName,lastName FROM    #tempRuleMaster;   
 
SET IDENTITY_INSERT table2 ON
INSERT  INTO table2( id, firstName, lastName )SELECT  id, firstName,lastName FROM    #tempRuleDetails
SET IDENTITY_INSERT table2 OFF