Persist a tenant-scoped fixed serial for driver-plan clipboard text; include migration backfill by create_time. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.0 KiB
SQL
35 lines
1.0 KiB
SQL
-- 运输计划复制发群固定序号(租户内流水)
|
|
-- MySQL 5.7
|
|
-- 2026-10-09
|
|
-- 若列已存在,跳过 ALTER(重复执行会报 Duplicate column)。
|
|
|
|
ALTER TABLE `pl_plan`
|
|
ADD COLUMN `copy_seq_no` int(11) DEFAULT NULL COMMENT '复制发群序号(租户内固定流水,首次复制时分配)' AFTER `plan_no`,
|
|
ADD KEY `idx_pl_plan_tenant_copy_seq` (`tenant_no`, `copy_seq_no`);
|
|
|
|
-- 历史回填:按租户 create_time ASC, id ASC,含软删;已有值不覆盖
|
|
-- MySQL 5.7 用户变量按租户编号(会话内执行)
|
|
SET @prev_tenant := NULL;
|
|
SET @rn := 0;
|
|
|
|
UPDATE `pl_plan` p
|
|
INNER JOIN (
|
|
SELECT
|
|
t.id,
|
|
t.seq_no
|
|
FROM (
|
|
SELECT
|
|
id,
|
|
tenant_no,
|
|
@rn := IF(@prev_tenant = tenant_no, @rn + 1, 1) AS seq_no,
|
|
@prev_tenant := tenant_no AS _tenant
|
|
FROM (
|
|
SELECT id, tenant_no, create_time
|
|
FROM `pl_plan`
|
|
ORDER BY tenant_no ASC, create_time ASC, id ASC
|
|
) ordered
|
|
) t
|
|
) ranked ON ranked.id = p.id
|
|
SET p.`copy_seq_no` = ranked.seq_no
|
|
WHERE p.`copy_seq_no` IS NULL;
|