おそらく、DELETE
を実行できます。 OUTPUT
と組み合わせたステージング テーブルから 句。そして INSERT
OUTPUT
の結果 句をメイン テーブルに挿入して、これをすべて 1 つのアトミック ステートメントで実行します。
OUTPUT deleted.* into dashboardtasks
いくつかの制限が BOL に記載されています> ただし、このアプローチは実行不可能になる可能性があります。
output_table はできません:
- 有効なトリガーが定義されている
- 外部キー制約のいずれかの側に参加します。
- 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
))