Возможно, на него уже есть ответ, но я не смог его найти... Итак, у меня есть 2 таблицы и данные в третьей. Назовем их (Source, Target и UpdateTarget).
Мне нужно вставить записи из источника в цель, затем получить автоматически увеличивающиеся идентификаторы из цели и обновить таблицу UpdateTarget с этими идентификаторами на основе фильтров из исходной таблицы. Я пытался использовать OUTPUT, но выдает ошибку:
Не удалось связать составной идентификатор "s.EmployeeID".
Вот мой текущий SQL-запрос:
CREATE TABLE dbo.target
(
id INT IDENTITY(1,1) PRIMARY KEY,
employee VARCHAR(32)
);
CREATE TABLE dbo.source
(
id INT IDENTITY(1,1) PRIMARY KEY,
employee VARCHAR(32),
EmployeeID int
);
CREATE TABLE dbo.updateTarget
(
id INT IDENTITY(1,1) PRIMARY KEY,
ExternalID int
);
DECLARE @MyTableVar TABLE
(
id INT,
EmployeeID int
);
INSERT dbo.target (employee)
OUTPUT
inserted.id, -- autoincremented ID
s.EmployeeID -- here i got an error
INTO @MyTableVar
SELECT s.employee
FROM dbo.source AS s
UPDATE dbo.updateTarget
SET ExternalID = data.ID
FROM @MyTableVar data
WHERE updateTarget.ID = data.EmployeeID
DROP TABLE source
DROP TABLE target
DROP TABLE updateTarget
У меня нет столбца EmployeeID в целевой таблице.
Есть ли способ добиться этого, не делая два запроса для каждой записи? Или вы можете указать мне на существующий ответ, если таковой имеется?
Спасибо!