2015-06-02 4 views
0

Я вставки данных в БД, тоСмешайте две вставки с подзапросом?

UnitChaine

[id],[FK_Unit],[DateIn],[DateOut] 

И Personnal

[FK_VW_PERSONNAL],[FK_UnitChaine] 

Здесь у меня есть список FK_VW_PERSONNAL идентификаторов, которые создаются, и я должен вставить их в Personnal и UnitChaine.

Я cound вставки UnitChains затем получить идентификатор вставленной затем создать Personnal:

INSERT INTO [dbo].[pstl_UnitChaine] 
      ([FK_Unit] 
      ,[DateIn] 
      ,[DateOut]) 
    VALUES 
      (1 
      ,NOW 
      ,NULL) 

Тогда поиск для [ID] вставленных [pstl_UnitChaine] и вставить новую Personnal:

INSERT INTO [Personnal] 
      ([FK_VW_PERSONNAL] 
      ,[FK_UnitChaine]) 
    VALUES 
      (id from my list 
      ,id I found from insert) 

Но Я думаю, что есть самый быстрый способ сделать это, и я не убийца SQL, поэтому, если вы можете направить меня/объяснить мне что-то, что может улучшить боль кодирования, было бы замечательно :-)

Edit: После PaulFrancis предложение у меня есть один вопрос:

There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement. 

второй вставки Juste после вставки [pstl_UnitChaine]:

INSERT INTO [dbo].[Personnal] ([FK_VW_PERSONNAL].[FK_UnitChaine]) VALUES (2118, SCOPE_IDENTITY()) 
+0

это невозможно –

ответ

1

Вы можете использовать IDENTITY. Просто убедитесь, что вы установили INSERT устройства UnitChaine, перед выполнением этого.

INSERT INTO [dbo].[pstl_UnitChaine] 
     ([FK_Unit] 
     ,[DateIn] 
     ,[DateOut]) 
VALUES 
     (1 
     ,NOW 
     ,NULL) 

INSERT INTO [Personnal] 
     ([FK_VW_PERSONNAL] 
     ,[FK_UnitChaine]) 
VALUES 
     (100 
     ,SCOPE_IDENTITY()) 

SCOPE_IDENTITY() получает Идентичность INSERT, что произошло в области.

+0

У меня эта ошибка: в инструкции INSERT меньше столбцов, чем значений, указанных в предложении VALUES. Количество значений в предложении VALUES должно соответствовать количеству столбцов, указанных в инструкции INSERT. – clement

+0

Обновите свое сообщение с помощью запроса, который вы используете. – PaulFrancis

+0

Отредактировано @PaulFrancis – clement

Смежные вопросы