81 lines
2.0 KiB
SQL
81 lines
2.0 KiB
SQL
-- =============================================
|
||
-- 数据库迁移脚本:为 member_driver 表添加 id_card 字段
|
||
-- 用途:存储司机身份证前后面照片地址
|
||
-- 创建时间:2025-10-20
|
||
-- 数据库:MySQL
|
||
-- 版本:安全版本(包含错误处理)
|
||
-- =============================================
|
||
|
||
-- 开始事务
|
||
START TRANSACTION;
|
||
|
||
-- 检查表是否存在
|
||
SET @table_exists = (
|
||
SELECT COUNT(*)
|
||
FROM INFORMATION_SCHEMA.TABLES
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'member_driver'
|
||
);
|
||
|
||
-- 如果表不存在,回滚并退出
|
||
IF @table_exists = 0 THEN
|
||
ROLLBACK;
|
||
SELECT 'ERROR: member_driver 表不存在' AS result;
|
||
LEAVE;
|
||
END IF;
|
||
|
||
-- 检查字段是否已存在
|
||
SET @column_exists = (
|
||
SELECT COUNT(*)
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'member_driver'
|
||
AND COLUMN_NAME = 'id_card'
|
||
);
|
||
|
||
-- 如果字段已存在,回滚并退出
|
||
IF @column_exists > 0 THEN
|
||
ROLLBACK;
|
||
SELECT 'WARNING: id_card 字段已存在,无需添加' AS result;
|
||
LEAVE;
|
||
END IF;
|
||
|
||
-- 添加 id_card 字段
|
||
ALTER TABLE member_driver
|
||
ADD COLUMN id_card TEXT COMMENT '身份证前后面照片地址(多个URL用逗号分隔)'
|
||
AFTER car_img;
|
||
|
||
-- 验证字段是否添加成功
|
||
SET @verify_result = (
|
||
SELECT COUNT(*)
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'member_driver'
|
||
AND COLUMN_NAME = 'id_card'
|
||
);
|
||
|
||
-- 如果验证失败,回滚
|
||
IF @verify_result = 0 THEN
|
||
ROLLBACK;
|
||
SELECT 'ERROR: id_card 字段添加失败' AS result;
|
||
LEAVE;
|
||
END IF;
|
||
|
||
-- 提交事务
|
||
COMMIT;
|
||
|
||
-- 显示成功信息
|
||
SELECT 'SUCCESS: id_card 字段添加成功' AS result;
|
||
|
||
-- 显示字段信息
|
||
SELECT
|
||
COLUMN_NAME as '字段名',
|
||
DATA_TYPE as '数据类型',
|
||
IS_NULLABLE as '允许空值',
|
||
COLUMN_DEFAULT as '默认值',
|
||
COLUMN_COMMENT as '注释'
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = DATABASE()
|
||
AND TABLE_NAME = 'member_driver'
|
||
AND COLUMN_NAME = 'id_card';
|