Eventuell könntest du das DELETE
machen aus Ihrer Staging-Tabelle kombiniert mit OUTPUT
Klausel. und INSERT
das Ergebnis von OUTPUT
-Klausel in Ihre Haupttabelle, um dies alles in einer atomaren Anweisung zu erledigen.
OUTPUT deleted.* into dashboardtasks
Es gibt einige Einschränkungen, die in BOL aufgeführt sind was diesen Ansatz jedoch möglicherweise unbrauchbar macht.
Die output_table kann nicht:
- Haben Sie aktivierte Trigger darauf definiert.
- Nehmen Sie an beiden Seiten einer Fremdschlüsselbeschränkung teil.
- Haben CHECKconstraints oder aktivierte Regeln.
Vollständige Syntax für Ihre Abfrage...
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
))