Files
cattleTransportation/tradeCattle/add_id_card_field_safe.sql

81 lines
2.0 KiB
MySQL
Raw Normal View History

2025-10-21 09:01:11 +08:00
-- =============================================
-- 数据库迁移脚本:为 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';