Possivelmente você poderia fazer o
DELETE
da sua tabela de preparação combinada com o OUTPUT
cláusula. e INSERT
o resultado do OUTPUT
cláusula em sua tabela principal para fazer tudo isso em uma instrução atômica. OUTPUT deleted.* into dashboardtasks
Existem algumas restrições listadas em BOL embora o que pode tornar esta abordagem inviável.
A tabela_saída não pode:
- Ative acionadores definidos nele.
- Participe em ambos os lados de uma restrição de chave estrangeira.
- Ter restrições CHECK ou regras ativadas.
Sintaxe completa para sua consulta...
DELETE FROM staggingtasks
OUTPUT DELETED.[tour],
DELETED.tourname,
DELETED.[taskname],
DELETED.[deptdate],
DELETED.[tasktype],
DELETED.[desc],
DELETED.[duedate],
DELETED.[compdate],
DELETED.[comments],
DELETED.[agent],
DELETED.[compby],
DELETED.[graceperiod],
DELETED.completed,
DELETED.canceled
INTO dashboardtasks
WHERE NOT EXISTS(SELECT *
FROM dashboardtasks
WHERE ( staggingtasks.tour = dashboardtasks.tour
and staggingtasks.taskname = dashboardtasks.taskname
and staggingtasks.deptdate = dashboardtasks.deptdate
and staggingtasks.duedate = dashboardtasks.duedate
and staggingtasks.tourname = dashboardtasks.tourname
))