古い/アーカイブレコードが元のデータソースに存在しなくなったために「削除済み」としてマークする方法と同じ問題がありました。
基本的に、2つのテーブルを作成しました。1つは元のデータソースからのすべてのレコードを含むメインテーブルで、もう1つはスクリプトを実行するたびに元のデータソースを保存するための一時テーブルです。
メインテーブル
ID, NAME, SURNAME, DATE_MODIFIED, ORDERS_COUNT, etc
plus a STATUS column (1 for Active, 0 for Deleted)
TEMP TABLEは元のテーブルと同じですが、STATUS列はありません
ID, NAME, SURNAME, DATE_MODIFIED, ORDERS_COUNT, etc
重要なのは、MAINテーブルのIDがTempテーブルに存在しなくなった場合に、 MAINTABLEをSTATUS=0で更新することでした。すなわち:ソースレコードが削除されました。
私はこのようにしました:
UPDATE m
SET m.Status = 0
FROM tblMAIN AS m
LEFT JOIN tblTEMP AS t
ON t.ID = m.ID
WHERE t.ID IS NULL