diff --git a/docs/sql/migrations/2026-09-03-pl-plan-archive-price-perm.sql b/docs/sql/migrations/2026-09-03-pl-plan-archive-price-perm.sql index f3e5e3f35..10505287d 100644 --- a/docs/sql/migrations/2026-09-03-pl-plan-archive-price-perm.sql +++ b/docs/sql/migrations/2026-09-03-pl-plan-archive-price-perm.sql @@ -1,5 +1,9 @@ -- 运输计划归档:查看单价金额按钮权限 -- 设计: docs/superpowers/specs/2026-09-03-pl-plan-archive-price-permission-design.md +-- +-- 注意:sys_role_menu.id 勿用 REPLACE(UUID(),'-','') 做多行 INSERT…SELECT。 +-- MySQL 5.7 下 UUID() 在同一次 SELECT 中可能只算一次,导致 PRIMARY 冲突(1062)。 +-- 改用按行确定性 MD5(role_id + menu + 源行 id)。 SET NAMES utf8mb4; @@ -23,7 +27,7 @@ INSERT INTO `sys_role_menu` ( `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT - REPLACE(UUID(), '-', ''), + MD5(CONCAT(rm.role_id, '|PL_PLAN_ARCHIVE_PRICE|parent|', rm.id)), rm.role_id, 'PL_PLAN_ARCHIVE_PRICE', rm.tenant_no, @@ -51,7 +55,7 @@ INSERT INTO `sys_role_menu` ( `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` ) SELECT - REPLACE(UUID(), '-', ''), + MD5(CONCAT(rm.role_id, '|PL_PLAN_ARCHIVE_PRICE|archive|', rm.id)), rm.role_id, 'PL_PLAN_ARCHIVE_PRICE', rm.tenant_no,