-- 阶段0:正课列、学期序号校正 -- 正课与自动排课分离。回填只覆盖星期一至星期五的 1-6 节且可排课的格子。 -- 假期时间在学期校历表中是 VARCHAR(10),直接 TO_CHAR 即可。列已存在时不要重复执行 ALTER。 ALTER TABLE "学期校历表" ADD "正课" TINYINT DEFAULT 0 NOT NULL; ALTER TABLE "假期表" ADD "正课" TINYINT DEFAULT 0 NOT NULL; UPDATE "学期校历表" SET "正课" = 1 WHERE "可排课" = 1 AND "节次" IN ('1-2', '3-4', '5-6') AND TO_CHAR("假期时间", 'D') IN ('2', '3', '4', '5', '6'); -- 年度末位即学期次(202602 -> 2)。校正现有序号与末位不一致的记录。 UPDATE "学期" SET "序号" = MOD("年度", 10) WHERE "年度" >= 200001 AND "年度" <= 210003 AND MOD("年度", 100) BETWEEN 1 AND 3 AND "序号" <> MOD("年度", 10);