Vous pourriez éventuellement faire le DELETE
de votre table de staging combinée avec le OUTPUT
clause. et INSERT
le résultat de la OUTPUT
clause dans votre table principale pour faire tout cela dans une seule instruction atomique.
OUTPUT deleted.* into dashboardtasks
Il existe certaines restrictions répertoriées dans BOL bien que cela puisse rendre cette approche non viable.
La output_table ne peut pas :
- Avoir activé les déclencheurs définis dessus.
- Participer de part et d'autre d'une contrainte de clé étrangère.
- Avoir des contraintes CHECK ou des règles activées.
Syntaxe complète de votre requête...
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
))