-- 为已有学校补齐学校级默认实训任务;不会覆盖任何学校管理员已保存的默认配置。 START TRANSACTION; CREATE TABLE IF NOT EXISTS school_default_task_initialization ( school_id varchar(64) NOT NULL, status varchar(16) NOT NULL, last_error varchar(1000) NULL, attempt_count int NOT NULL DEFAULT 0, create_time datetime NOT NULL, update_time datetime NOT NULL, PRIMARY KEY (school_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校默认实训任务初始化状态'; INSERT INTO task_allocation (id, class_id, school_id, module, disabled_status, sort) SELECT UUID(), CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)), s.school_id, p.module, p.disabled_status, p.sort FROM school s JOIN task_allocation p ON BINARY p.class_id = BINARY '999999999' WHERE BINARY s.school_id <> BINARY '999999999' AND NOT EXISTS ( SELECT 1 FROM task_allocation existing_task WHERE BINARY existing_task.class_id = BINARY CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)) ); INSERT INTO school_default_task_initialization ( school_id, status, last_error, attempt_count, create_time, update_time ) SELECT s.school_id, 'READY', NULL, 1, NOW(), NOW() FROM school s WHERE BINARY s.school_id <> BINARY '999999999' AND EXISTS ( SELECT 1 FROM task_allocation default_task WHERE BINARY default_task.class_id = BINARY CONCAT('SCHOOL_DEFAULT:', CONVERT(s.school_id USING BINARY)) ) ON DUPLICATE KEY UPDATE status = IF(school_default_task_initialization.status = 'READY', school_default_task_initialization.status, 'READY'), update_time = NOW(); COMMIT; SELECT school_id, status, attempt_count, update_time FROM school_default_task_initialization ORDER BY update_time DESC;