Forse potresti fare il DELETE
dalla tua tabella di staging combinato con il OUTPUT
clausola. e INSERT
il risultato dell'OUTPUT
clausola nella tabella principale per fare tutto questo in un'unica istruzione atomica.
OUTPUT deleted.* into dashboardtasks
Esistono alcune restrizioni elencate in BOL sebbene ciò possa rendere questo approccio impraticabile.
La tabella_output non può:
- Avere attivato trigger definiti su di esso.
- Partecipa su entrambi i lati del vincolo di chiave esterna.
- Avere CHECKconstraints o regole abilitate.
Sintassi completa per la tua query...
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
))