Евентуално бихте могли да направите DELETE
от вашата сценична таблица в комбинация с OUTPUT
клауза. и INSERT
резултатът от OUTPUT
клауза в основната ви таблица, за да направите всичко това в един атомен оператор.
OUTPUT deleted.* into dashboardtasks
Има някои ограничения, изброени в BOL което обаче може да направи този подход нежизнеспособен.
Изходната_таблица не може:
- Имате активирани тригери, дефинирани върху него.
- Участвайте от двете страни на ограничението за чужд ключ.
- Имате ограничения CHECK или активирани правила.
Пълен синтаксис за вашата заявка...
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
))