吴羡
5 天以前 8ad863082097ffdcab4a8e7f426d344a1fe6f892
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
-- ============================================================
-- 检验委托单孤儿数据清理(数据修复,非结构变更)
-- 生成日期:2026-11-06
--
-- 背景:客户库共有 24 条检验委托单,但委托下单只有 22 条。
--   多出的 2 条委托单(LMSY-20260922-01、LMSY-20260929-试样)
--   对应的下单记录(ins_order 10908、10938)已被删除,属于
--   历史遗留的孤儿数据。当前删除下单的逻辑已会级联清理委托单,
--   这两条是旧版本删除时留下的。
--
-- 已核实:这两条委托单没有明细、样品接收、报告、设备使用等
--   任何关联记录,删除不影响其他数据。
--
-- 仅按委托编号精确匹配,且再次校验“下单不存在 + 无任何关联记录”
-- 后才删除,可重复执行(幂等)。
--
-- 执行前建议备份(在 LIMS 数据库内执行):
--   CREATE TABLE cnas_inspection_order_bak_20261106 AS
--   SELECT * FROM cnas_inspection_order;
-- ============================================================
 
START TRANSACTION;
 
DELETE io
FROM cnas_inspection_order io
LEFT JOIN ins_order o ON o.id = io.ins_order_id
WHERE o.id IS NULL
  AND io.entrust_code IN ('LMSY-20260922-01', 'LMSY-20260929-试样')
  AND NOT EXISTS (
      SELECT 1 FROM cnas_inspection_order_detail d
      WHERE d.inspection_order_id = io.inspection_order_id)
  AND NOT EXISTS (
      SELECT 1 FROM cnas_process_sample ps
      WHERE ps.inspection_order_id = io.inspection_order_id)
  AND NOT EXISTS (
      SELECT 1 FROM cnas_process_report pr
      WHERE pr.inspection_order_id = io.inspection_order_id)
  AND NOT EXISTS (
      SELECT 1 FROM cnas_process_order_device pod
      WHERE pod.inspection_order_id = io.inspection_order_id);
 
COMMIT;
 
-- 校验(执行完可人工核对):
-- 委托单总数应与委托下单数一致(客户库应为 22):
-- SELECT COUNT(*) AS inspection_order_total FROM cnas_inspection_order;
-- SELECT COUNT(*) AS ins_order_total FROM ins_order;
--
-- 应返回 0 行:
-- SELECT io.inspection_order_id, io.entrust_code, io.ins_order_id
-- FROM cnas_inspection_order io
-- LEFT JOIN ins_order o ON o.id = io.ins_order_id
-- WHERE o.id IS NULL;