migrate_pl_plan_copy_seq_no_20261009.sql 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. -- 运输计划复制发群固定序号(租户内流水)
  2. -- MySQL 5.7
  3. -- 2026-10-09
  4. -- 若列已存在,跳过 ALTER(重复执行会报 Duplicate column)。
  5. ALTER TABLE `pl_plan`
  6. ADD COLUMN `copy_seq_no` int(11) DEFAULT NULL COMMENT '复制发群序号(租户内固定流水,首次复制时分配)' AFTER `plan_no`,
  7. ADD KEY `idx_pl_plan_tenant_copy_seq` (`tenant_no`, `copy_seq_no`);
  8. -- 历史回填:按租户 create_time ASC, id ASC,含软删;已有值不覆盖
  9. -- MySQL 5.7 用户变量按租户编号(会话内执行)
  10. SET @prev_tenant := NULL;
  11. SET @rn := 0;
  12. UPDATE `pl_plan` p
  13. INNER JOIN (
  14. SELECT
  15. t.id,
  16. t.seq_no
  17. FROM (
  18. SELECT
  19. id,
  20. tenant_no,
  21. @rn := IF(@prev_tenant = tenant_no, @rn + 1, 1) AS seq_no,
  22. @prev_tenant := tenant_no AS _tenant
  23. FROM (
  24. SELECT id, tenant_no, create_time
  25. FROM `pl_plan`
  26. ORDER BY tenant_no ASC, create_time ASC, id ASC
  27. ) ordered
  28. ) t
  29. ) ranked ON ranked.id = p.id
  30. SET p.`copy_seq_no` = ranked.seq_no
  31. WHERE p.`copy_seq_no` IS NULL;