-- ======================================== -- 奖学金名额分配删除问题诊断脚本 -- 创建时间: 2025-01-28 -- 说明: 用于排查无法删除的名额分配记录 -- ======================================== USE hzdyjs_xg; -- 1. 查看所有名额分配记录的状态 SELECT id, batch_id, scholarship_type_id, allocation_level, target_dept_id, total_quota, used_quota, reserved_quota, available_quota, is_adjustable, is_locked, status, deleted, create_time, update_time FROM jcbt_scholarship_quota WHERE deleted = 0 ORDER BY create_time DESC; -- 2. 查找可能有问题的记录(已使用名额大于0或已锁定) SELECT '已使用名额大于0' as issue_type, id, batch_id, scholarship_type_id, total_quota, used_quota, reserved_quota, available_quota, is_locked, status FROM jcbt_scholarship_quota WHERE deleted = 0 AND used_quota > 0 UNION ALL SELECT '已被锁定' as issue_type, id, batch_id, scholarship_type_id, total_quota, used_quota, reserved_quota, available_quota, is_locked, status FROM jcbt_scholarship_quota WHERE deleted = 0 AND is_locked = 1 UNION ALL SELECT '状态异常' as issue_type, id, batch_id, scholarship_type_id, total_quota, used_quota, reserved_quota, available_quota, is_locked, status FROM jcbt_scholarship_quota WHERE deleted = 0 AND status != 'ACTIVE'; -- 3. 检查是否存在外键约束或关联数据 -- 检查是否有申请记录引用了这些名额 SELECT q.id as quota_id, q.batch_id, q.scholarship_type_id, q.used_quota, q.is_locked, COUNT(DISTINCT a.id) as application_count FROM jcbt_scholarship_quota q LEFT JOIN jcbt_scholarship_application a ON a.batch_id = q.batch_id AND a.scholarship_type_id = q.scholarship_type_id WHERE q.deleted = 0 GROUP BY q.id, q.batch_id, q.scholarship_type_id, q.used_quota, q.is_locked HAVING application_count > 0 OR q.used_quota > 0 OR q.is_locked = 1; -- 4. 检查是否有下级名额分配 SELECT parent.id as parent_quota_id, parent.allocation_level as parent_level, parent.used_quota as parent_used_quota, parent.is_locked as parent_is_locked, COUNT(child.id) as child_count FROM jcbt_scholarship_quota parent LEFT JOIN jcbt_scholarship_quota child ON child.parent_quota_id = parent.id AND child.deleted = 0 WHERE parent.deleted = 0 GROUP BY parent.id, parent.allocation_level, parent.used_quota, parent.is_locked HAVING child_count > 0; -- 5. 详细查看有问题的记录(根据实际情况调整ID) -- 请替换下面的ID为实际无法删除的记录ID -- SELECT * FROM jcbt_scholarship_quota WHERE id = 替换为实际ID; -- 6. 查看相关批次信息 SELECT b.id as batch_id, b.batch_name, b.batch_code, b.status as batch_status, b.start_time, b.end_time, COUNT(q.id) as quota_count FROM jcbt_scholarship_batch b LEFT JOIN jcbt_scholarship_quota q ON q.batch_id = b.id AND q.deleted = 0 WHERE b.deleted = 0 GROUP BY b.id, b.batch_name, b.batch_code, b.status, b.start_time, b.end_time; -- 7. 查看奖学金类型信息 SELECT st.id as type_id, st.type_name, st.type_code, st.status as type_status, COUNT(q.id) as quota_count FROM jcbt_scholarship_type st LEFT JOIN jcbt_scholarship_quota q ON q.scholarship_type_id = st.id AND q.deleted = 0 WHERE st.deleted = 0 GROUP BY st.id, st.type_name, st.type_code, st.status;