none
Как заполнить временную таблицу из Select? RRS feed

  • Общие обсуждения

  • Всем привет!

    Стоит задача из одной таблицы БД (DB1) перенести данные в другую таблицу БД (DB2)

    Declare @tempTable table (Id bigint, OldId bigint)
    
    INSERT INTO DB1.Table (...) 
    OUTPUT inserted.Id, ? INTO @tempTable 
    SELECT *
    FROM DB2.Table hr
    WHERE ...

    Проблема заключается в том, что не знаю как во временную таблицу вставить Id из команды Select.

    Есть мысль, что можно в DB1.Table создать дополнительный столбец и заполнить ID из Select, а потом в конце команды удалить этот столбец. Является ли это допустимым или есть другое решение?

    Помогите пожалуйста

    17 марта 2019 г. 11:03

Все ответы

  • Ваш код написан так, что "id из команды select" гарантированно будет в inserted

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

    18 марта 2019 г. 6:53
  • Нет, в inserted попадает id которому присваивается значение из insert, а не тот который из select. 

    Мне нужно перенести данные из одной базы в другую, для этого создаю временную таблицу, где хочу хранить старые значения id, чтоб потом по этому старому id вытащить другие данные и также в новую базу записать. Больше мне это старые id не пригодятся.

    18 марта 2019 г. 7:27
  • Ещё раз. Вы вставляете все колонки из DB2.Table в DB1.Table. Это значит, что "старые" id гарантированно присутствуют в DB1.Table, если только вы не пользуетесь сложными схемами с instead of триггерами.

    Покажите полную схему данных, которые необходимо перенести. С констрейнтами.

    19 марта 2019 г. 9:20