v2.1更新
This commit is contained in:
131
sql/upgrades/v1.8.sql
Normal file
131
sql/upgrades/v1.8.sql
Normal file
@@ -0,0 +1,131 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - v1.7 → v1.8 升级脚本
|
||||
-- 字符集: utf8mb4
|
||||
--
|
||||
-- 变更内容:
|
||||
-- 1. conduct_records 表添加 related_type 列
|
||||
-- 2. conduct_records 表添加 semester_id 列 + 外键
|
||||
-- 3. attendance_records 表添加 semester_id 列 + 外键
|
||||
--
|
||||
-- 兼容性: 使用存储过程实现幂等,phpMyAdmin 可直接执行
|
||||
-- ===========================================
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 1: conduct_records 添加 related_type 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'related_type'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD COLUMN `related_type` ENUM('manual', 'homework', 'attendance') DEFAULT 'manual'
|
||||
AFTER `recorder_name`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 2: conduct_records 添加 semester_id 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD COLUMN `semester_id` INT DEFAULT NULL COMMENT '所属学期ID'
|
||||
AFTER `revoked_at`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 3: conduct_records 添加 semester_id 外键
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
AND REFERENCED_TABLE_NAME IS NOT NULL
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD FOREIGN KEY (`semester_id`) REFERENCES `semesters`(`semester_id`) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 4: attendance_records 添加 semester_id 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
) THEN
|
||||
ALTER TABLE `attendance_records`
|
||||
ADD COLUMN `semester_id` INT DEFAULT NULL COMMENT '所属学期ID'
|
||||
AFTER `deduction_record_id`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 5: attendance_records 添加 semester_id 外键
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
AND REFERENCED_TABLE_NAME IS NOT NULL
|
||||
) THEN
|
||||
ALTER TABLE `attendance_records`
|
||||
ADD FOREIGN KEY (`semester_id`) REFERENCES `semesters`(`semester_id`) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
Reference in New Issue
Block a user