先訂清楚要判斷甚麼,再準備資料
流程記錄寫「成功」,不等於目標資料現時一定存在。以固定編號查目標有沒有紀錄,再去除多次成功記錄造成的重複列項。排查前要確認目標匯出齊全、截數時間合適,才可判斷是否真正漏寫。
以下全部是假設資料。請在新的 SQLite 測試資料庫建立各表,再執行唯讀查詢。數量以件計,金額以港元的分作整數儲存;顯示港元時除以 100。
| 編號 | 外部編號 | 結果代碼 |
|---|---|---|
| 1 | X1 | success |
| 2 | X2 | success |
| 3 | X3 | failed |
CREATE TABLE import_rows(id INTEGER PRIMARY KEY, external_id TEXT, email TEXT, amount_cents INTEGER, business_date TEXT);
CREATE TABLE sync_attempts(id INTEGER PRIMARY KEY, external_id TEXT, outcome TEXT);
CREATE TABLE target_records(id TEXT PRIMARY KEY, external_id TEXT UNIQUE);
INSERT INTO import_rows VALUES (1,'X1','a@example.test',10000,'2026-10-01'),(2,'X2',' ',20000,'03/04/2026'),(3,'X3',NULL,NULL,NULL),(4,'X4','d@example.test',0,'2026-02-30');
INSERT INTO sync_attempts VALUES (1,'X1','success'),(2,'X2','success'),(3,'X3','failed');
INSERT INTO target_records VALUES ('T1','X1');執行查詢,核對實際結果
SELECT DISTINCT a.external_id FROM sync_attempts a
WHERE a.outcome='success' AND NOT EXISTS (
SELECT 1 FROM target_records t WHERE t.external_id=a.external_id
) ORDER BY a.external_id;| 外部編號 |
|---|
| X2 |
X2 記錄成功,但目標沒有對應資料;X1 已有 T1,沒有差異。X3 本來失敗,應在失敗清單處理。重試 X2 前先查回覆及目標歷史,否則目標匯出只是慢了一步,也可能造成重複新增。
按資料範圍使用結果
例子目標快照完整,外部編號亦唯一。延遲同步、資料已刪除或匯出不齊,都可能造成假差異。唯讀對照表本身未實作防重複重試。
本例的建表、資料及結果已在 SQLite 執行。套用時先在系統測試副本調整欄位及狀態規則,再與流程負責人核對預期結果。其他資料庫平台未經測試。