Files
cattleTransportation/tradeCattle/add_id_card_field_safe.sql
2025-10-21 09:01:11 +08:00

81 lines
2.0 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.

-- =============================================
-- 数据库迁移脚本:为 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';