-- ============================================ -- 学生管理状态更新SQL -- 功能:1. 更新"已释放"为"释放" -- 2. 添加两个新的学生状态(外出、假释) -- 3. 更新student_status字段注释 -- 日期:2025-01-XX -- ============================================ -- 0. 更新"已释放"为"释放" UPDATE `sys_dict_data` SET `dict_label` = '释放', `remark` = '释放状态' WHERE `dict_type` = 'study_student_status' AND `dict_value` = 'released'; -- 1. 添加"外出"状态到学员状态字典 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES (3, '外出', 'out', 'study_student_status', '', 'warning', 'N', '0', 'admin', NOW(), '外出状态') ON DUPLICATE KEY UPDATE `dict_label` = '外出', `dict_sort` = 3, `is_default` = 'N', `status` = '0', `remark` = '外出状态'; -- 2. 添加"假释"状态到学员状态字典 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `remark`) VALUES (4, '假释', 'parole', 'study_student_status', '', 'info', 'N', '0', 'admin', NOW(), '假释状态') ON DUPLICATE KEY UPDATE `dict_label` = '假释', `dict_sort` = 4, `is_default` = 'N', `status` = '0', `remark` = '假释状态'; -- 3. 更新sys_user表中student_status字段的注释(如果字段存在) SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sys_user' AND COLUMN_NAME = 'student_status'); SET @sqlstmt := IF(@exist > 0, 'ALTER TABLE `sys_user` MODIFY COLUMN `student_status` VARCHAR(50) DEFAULT NULL COMMENT ''学员状态(incarcerated-在押, released-释放, out-外出, parole-假释等)''', 'SELECT ''student_status字段不存在,请先执行database_update_student_status.sql'' as result'); PREPARE stmt FROM @sqlstmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 4. 更新字典类型备注 UPDATE `sys_dict_type` SET `remark` = '学员状态列表(在押、释放、外出、假释等)' WHERE `dict_type` = 'study_student_status'; -- 验证:查询所有学员状态字典数据 SELECT `dict_sort`, `dict_label`, `dict_value`, `dict_type`, `status`, `remark` FROM `sys_dict_data` WHERE `dict_type` = 'study_student_status' ORDER BY `dict_sort`; -- ============================================ -- 可选:删除sys_user表中的phonenumber字段 -- 注意:删除字段是危险操作,请先备份数据! -- 如果确定要删除,请取消下面的注释并执行 -- ============================================ -- 检查phonenumber字段是否存在 -- SET @exist := (SELECT COUNT(*) FROM information_schema.COLUMNS -- WHERE TABLE_SCHEMA = DATABASE() -- AND TABLE_NAME = 'sys_user' -- AND COLUMN_NAME = 'phonenumber'); -- SET @sqlstmt := IF(@exist > 0, -- 'ALTER TABLE `sys_user` DROP COLUMN `phonenumber`', -- 'SELECT ''phonenumber字段不存在'' as result'); -- PREPARE stmt FROM @sqlstmt; -- EXECUTE stmt; -- DEALLOCATE PREPARE stmt;