@artshelom

Как после merge добавить данные в 2 таблицы?

Использую SqlExpress 15.0.2080
Нужно после Merge into Добавить данные.
-- Делаем загрузку данных на сервер openJson для примера
MERGE INTO [dbo].[Payments] t 
  USING (SELECT * FROM OPENJSON('[{"ID":135981,"TimeStamp":"2018-07-10T17:17:34.15","serverId":null}]') 
  with ([ID] int, [TimeStamp] datetime, [serverId] int)) j ON (t.[ID] = j.[serverId]) 
  WHEN MATCHED THEN update set  t.[TimeStamp] = j.[TimeStamp]
  WHEN NOT MATCHED THEN INSERT ([TimeStamp]) values (j.[TimeStamp]) 
  output $action, inserted.[ID], j.[ID], null, null;
-- из Merge мы получаем Id, который раньше был у данной строчки и новый Id в базе данных
insert into [dbo].[Sync_TableEntities]([TableName], [CreateTime], [LastUpdateTime], [OrganizationId], [ServerColumnId])
  OUTPUT inserted2.Id values('[dbo].[Payments]',
    GETDATE(), GETDATE(), '35bcffb3-d804-452a-bd9c-cfa9f5f72c79', inserted.[ID])
-- Нужно загрузить со новым ID в одну таблицу
insert into [dbo].[Sync_EntityClientModels]([TableName], [CreateTime], [LastUpdateTime], [OrganizationId], 
    [ClientColumnId], [TableEntityId], [ClientId])
  values('[dbo].[Payments]', GETDATE(), GETDATE(), '35bcffb3-d804-452a-bd9c-cfa9f5f72c79', j.[ID], inserted2.Id, 
    'dbf6d576-95bc-46ac-8d08-d13bc5f6123b')
-- И загрузить в другую таблицу со старым ID(из данных) и загрузить ID с предыдущей таблице

И можно ли фильтр сделать у $action на Insert?
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
IF $action = 'INSERT' …
Руководство.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы