Обновление MSSQL установлено из предложения вывода - PullRequest
0 голосов
/ 26 июня 2019

Контекст Я получил временную таблицу, которая заполняется / корректируется пользователями.Назовем таблицу tmp, со столбцами ID, updated_at, price, foreign_ID.Каждый раз, когда пользователь вводит новую цену, столбец price заполняется, а updated_at и ID создаются автоматически.foreign_ID равен NULL до тех пор, пока запись не будет обработана в другой таблице, когда my foreign_ID должен содержать идентификатор другой таблицы.

Периодически я обновляю таблицу с ценами, назовем ее prices,Здесь представлены все цены, хранящиеся в разных источниках, в том числе из таблицы tmp.Таблица prices содержит столбцы ID, updated_at, price.

вопрос Я хочу вставить данные из моей таблицы tmp в таблицу pricesи обновите столбец foreign_ID соответствующей ID из моей таблицы prices.Как я могу вставить новые строки в таблицу и обновить / установить идентификаторы в другой таблице?

Мой желаемый результат после периодического обновления - это новая запись в таблице prices с новыми ценами, которые еще не былиобработано, и foreign_ID в моей таблице tmp, что соответствует ID в моей таблице prices.

Я знаю, что могу вывести вставленные идентификаторы, используя следующий запрос:

insert into prices
output inserted.ID
select price
from tmp;

Я изо всех сил пытаюсь понять, как я могу использовать inserted.ID для обновления столбца tmp.foreign_ID с выводом выше.

Помощь приветствуется!

1 Ответ

1 голос
/ 26 июня 2019

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

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

CREATE TABLE dbo.SomeTable (ID int IDENTITY(1,1),
                            SomeString varchar(10));
GO


DECLARE @IDs table (ID int);

INSERT INTO dbo.SomeTable (SomeString)
OUTPUT inserted.ID
INTO @IDs (ID)
VALUES('asdjgkde'),('sdflhdglf');

SELECT *
FROM @IDs;
GO

DROP TABLE dbo.SomeTable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...