Files
ClassManager/sql/upgrades/v1.1.sql
2026-05-28 20:48:29 +08:00

98 lines
2.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ===========================================
-- 班级操行分管理系统 - v1.0 → v1.1 升级脚本
-- 字符集: utf8mb4
--
-- 变更内容:
-- 1. users 表添加 need_change_password 列
-- 2. users 表添加 last_login_time 列
-- 3. users 表添加 last_login_ip 列
-- 4. users 表 password_hash 字段扩展至 VARCHAR(255)
--
-- 兼容性: 使用存储过程实现幂等phpMyAdmin 可直接执行
-- ===========================================
-- 升级步骤 1: users 添加 need_change_password 列
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 = 'users'
AND COLUMN_NAME = 'need_change_password'
) THEN
ALTER TABLE `users`
ADD COLUMN `need_change_password` TINYINT DEFAULT 1
AFTER `status`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 2: users 添加 last_login_time 列
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 = 'users'
AND COLUMN_NAME = 'last_login_time'
) THEN
ALTER TABLE `users`
ADD COLUMN `last_login_time` DATETIME DEFAULT NULL
AFTER `need_change_password`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 3: users 添加 last_login_ip 列
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 = 'users'
AND COLUMN_NAME = 'last_login_ip'
) THEN
ALTER TABLE `users`
ADD COLUMN `last_login_ip` VARCHAR(45) DEFAULT NULL
AFTER `last_login_time`;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;
-- 升级步骤 4: password_hash 字段扩展至 VARCHAR(255)
DROP PROCEDURE IF EXISTS `upgrade_step`;
DELIMITER $$
CREATE PROCEDURE `upgrade_step`()
BEGIN
DECLARE v_col_len INT;
SELECT CHARACTER_MAXIMUM_LENGTH INTO v_col_len
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'users'
AND COLUMN_NAME = 'password_hash';
IF v_col_len < 255 THEN
ALTER TABLE `users`
MODIFY COLUMN `password_hash` VARCHAR(255) NOT NULL;
END IF;
END$$
DELIMITER ;
CALL `upgrade_step`();
DROP PROCEDURE IF EXISTS `upgrade_step`;