У вас есть вопрос о синтаксисе MERGE
, для которого я не могу найти ответ.Синтаксис MERGE Ошибка SQL Server 2012
У меня есть следующий случай:
Step1:
create temp table #TempTbl
Шаг2: MERGE
:
MERGE INTO T1 target
USING T2 AS source ON (bunch of columns)
WHEN MATCHED
UPDATE
SET some columns from target equal some columns from source
WHEN NOT MATCHED BY TARGET
THEN INSERT (bunch of columns)
VALUES (bunch of columns from SOURCE)
OUTPUT $action, deleted.* into #TempTbl
Что мне нужно знать для моих выше шаги не я нашел бы только пустые данные в моей временной таблице #TempTbl
, как я только заявил WHEN NOT MATCHED ... THEN INSERT
, а не DELETE
?
Второй вопрос, какой тип колонки должен $action
быть, как у меня сообщение об ошибке: имя
Column или поставляемые значения не соответствует определению таблицы
Хотя я попытался определить первый столбец из моей таблицы и varchar(100)
, nvarchar(100)
, но не повезло. Но, если я опускаю поле $action
, то мое заявление работает.
'@ action' должен быть один и тот же тип данных, как ваш первый столбец' # TempTbl'. Чтобы сохранить что-либо из 'deleted', вы должны удалить что-то вроде« Когда НЕ СООТВЕТСТВОВАНО от источника THEN DELETE' – gofr1
@BogdanM Вы хотите сохранить измененные и/или вставленные значения? – jpw
Хорошо, и какой тип должен быть? Как я писал, я уже пробовал это, но не повезло – BogdanM