schema-audit.md 5.8 KB

逻辑删除表结构扫描清单

扫描范围与结论

  • 实体层:81 张 @TableName 表显式使用 @TableLogic
  • Flyway 层:55 张表存在可见生成列 logic_delete_active
  • 索引层:64 个唯一索引通过该列实现“仅未删除记录唯一”。
  • 对照组:26 张逻辑删除表不含该辅助列,说明逻辑删除本身只依赖 del_flag/deleted
  • 实际库:只读连接返回 MySQL 1045,本清单以版本化 Flyway 和实体代码为本轮权威基线;部署后必须用 information_schema 复核。

需要转换的 55 张表与 64 个索引

其中 54 张表使用数值主键,可由 MyBatis-Plus 直接执行 SET del_flag = 主键列sys_flow_node_config.id 为字符串,使用同类型字符串删除标记和专用 Mapper 删除 SQL。

表名 活跃唯一索引
ai_agent uk_agent_code_active
ai_business_app uk_ai_business_app_code_active
ai_business_application uk_ai_business_application_code_active
ai_business_application_object uk_ai_business_application_object_active
ai_business_application_publish_run uk_ai_business_publish_run_key_active, uk_ai_business_publish_run_version_active
ai_business_application_version uk_ai_business_application_version_active
ai_business_extension uk_ai_business_extension_code_active
ai_business_extension_version uk_ai_business_extension_version_active
ai_business_object uk_ai_business_object_code_active
ai_business_suite uk_ai_business_suite_code_active
ai_capability uk_ai_capability_code_active, uk_ai_capability_tool_active
ai_capability_access_token uk_ai_capability_token_key_active
ai_capability_approval uk_capability_approval_idempotency, uk_capability_approval_request
ai_capability_client uk_ai_capability_client_code_active, uk_ai_capability_client_key_active
ai_capability_flow_action_log uk_cap_flow_action_idempotency, uk_cap_flow_action_request
ai_capability_grant uk_ai_capability_grant_active
ai_capability_oauth_redirect_uri uk_ai_capability_redirect_active
ai_capability_policy uk_capability_policy_version
ai_capability_version uk_ai_capability_version_active
ai_code_rule uk_ai_code_rule_code_active
ai_code_rule_segment uk_ai_code_rule_segment_key_active
ai_crud_config uk_config_key_active
ai_lowcode_domain uk_ai_lowcode_domain_code_active, uk_ai_lowcode_domain_name_active
ai_lowcode_model uk_ai_lowcode_model_code_active
ai_model uk_ai_model_provider_model_active
ai_model_capability uk_ai_model_capability_active
ai_model_route_policy uk_ai_route_policy_code_active
ai_model_route_target uk_ai_route_target_active
ai_page_template uk_template_key_active
ai_prompt_template uk_ai_prompt_template_code_active
ai_report_data_business_definition uk_data_business_code_tenant_active
ai_report_data_connection uk_data_connection_code_tenant_active
ai_report_data_dataset uk_data_dataset_code_tenant_active
ai_report_data_dataset_category uk_data_dataset_category_code_tenant_active
ai_report_data_dimension uk_data_dimension_code_tenant_active
sample_purchase_order uk_sample_purchase_order_business_key_active, uk_sample_purchase_order_no_active
sys_api_config uk_method_url_active
sys_config uk_tenant_config_key_active
sys_data_scope_config uk_tenant_mapper_active
sys_dict_data uk_tenant_dict_data_active
sys_dict_type uk_tenant_dict_type_active
sys_employee uk_emp_no_active
sys_flow_node_config uk_model_node_active
sys_job_api_idempotency uk_job_api_idempotency_active
sys_job_api_token uk_job_api_token_key_active
sys_job_config uk_job_name_group_active
sys_message_biz_type uk_tenant_type_active
sys_message_template uk_tenant_code_active
sys_org uk_tenant_org_name_active
sys_outbound_whitelist uk_outbound_whitelist_active
sys_post uk_tenant_org_post_active, uk_tenant_post_code_active
sys_resource uk_tenant_resource_active
sys_role uk_tenant_role_key_active, uk_tenant_role_name_active
sys_tenant uk_tenant_name_active
sys_user sys_user_unique_active

历史索引漂移

ai_code_rule 是已确认的历史例外:V1.0.10 曾创建 uk_ai_code_rule_code_active,但 V1.0.36 后续将其删除并使用永久唯一索引 uk_ai_code_rule_code。因此迁移不能仅依据早期脚本静态执行 DROP INDEX;V1.0.51 会从 information_schema.STATISTICS 发现实际存在的索引,并将这两个候选索引统一替换为最终墓碑唯一索引 uk_ai_code_rule_code_active (tenant_id, rule_code, del_flag)

不需要机械添加辅助结构的 26 张逻辑删除表

ai_business_extension_execution_logai_business_triggerai_capability_invocation_logai_context_configai_custom_query_schemeai_providerai_report_directoryai_report_projectai_report_templatebiz_leave_requestsys_file_groupsys_file_storage_configsys_flow_approval_levelsys_flow_condition_rulesys_flow_entrysys_flow_entry_field_mappingsys_flow_fill_batchsys_flow_fill_batch_itemsys_flow_formsys_flow_form_instancesys_flow_modelsys_flow_model_versionsys_flow_spel_templatesys_flow_templatesys_job_logsys_notice

这些表仍然正常使用逻辑删除。若未来为其中某张表新增业务唯一键,必须先判断唯一性是覆盖历史记录还是仅覆盖未删除记录;只有后者才需要把 del_flag 升级为唯一删除标记并加入普通唯一索引。