Я часто запускаю обновления на работе, однако, я хотел бы начать использовать команду merge. Я все еще не так хорошо знаком с этим.using merge для обновления
Как бы вы переадресовали или, по крайней мере, дали мне представление о следующем заявлении об обновлении, используя MERGE?
BEGIN TRANSACTION T1
SELECT @@TRANCOUNT;
WITH RADHE2
AS (SELECT ROW_NUMBER() OVER(PARTITION BY Assigned_To, Assigned_To_Descriptor /*,..*/
/* Irrelevant columns removed for brevity*/
ORDER BY Rn_Create_Date DESC, Assigned_To DESC) AS ID,
*
FROM PivCRM_Prod_Online_ED.dbo.Rn_Appointments
WHERE AN_ACTIVE = 1
AND rn_edit_date > '12 nov 2013'
AND ASSIGNED_TO = 0x000000000000074F
AND notes LIKE 'TAM_Indigo Base_Oct 2013')
--======================================================
--SETTING Appt_Date TO TOMORROW
UPDATE PivCRM_Prod_Online_ED.dbo.Rn_Appointments
SET Appt_Date = '14 NOV 2013'
FROM PivCRM_Prod_Online_ED.dbo.Rn_Appointments R
INNER JOIN RADHE2 R1
ON R.RN_APPOINTMENTS_ID = R1.Rn_APPOINTMENTS_ID
WHERE R1.ID = 1
--COMMIT TRANSACTION T1
Если это не сломано, зачем это исправлять? – gvee
Какова мотивация желания использовать MERGE? –
Насколько я знаю, нет очевидного всегда применимого преимущества использования слияния. Это сложнее в использовании, чем обычное обновление и не имеет преимуществ в производительности (?). Поэтому вам следует переключиться на него только тогда, когда вы хотите создать одну логическую операцию для вставки/обновления/удаления, объединив различия между наборами - следовательно, MERGE - или нишевые случаи, такие как необходимость значений OUTPUT из объединенных таблиц во время операции INSERT. – Kahn