多项目共用SQL 添加需要字段

当有多个项目,每个项目均有一个相同的表,当多个项目共同使用同一套代码时,有一天需求增加了字段,如何保证其他项目不报错

解决方案

sql 复制代码
-- 添加高温字段(带存在性检查)
IF NOT EXISTS (SELECT * FROM sys.columns 
               WHERE object_id = OBJECT_ID(N'sys_barninfo') 
               AND name = 'HighTemperature')
BEGIN
    ALTER TABLE sys_barninfo ADD HighTemperature DECIMAL(5,1) NULL;
    
    IF NOT EXISTS (SELECT * FROM sys.extended_properties 
                   WHERE major_id = OBJECT_ID(N'sys_barninfo') 
                   AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'sys_barninfo'), 'HighTemperature', 'ColumnId')
                   AND name = N'MS_Description')
    BEGIN
        EXEC sys.sp_addextendedproperty 
            @name = N'MS_Description', 
            @value = N'高温值,精确到小数点后一位', 
            @level0type = N'SCHEMA', @level0name = 'dbo',
            @level1type = N'TABLE',  @level1name = 'sys_barninfo',
            @level2type = N'COLUMN', @level2name = 'HighTemperature';
    END
END

-- 添加低温字段(带存在性检查)
IF NOT EXISTS (SELECT * FROM sys.columns 
               WHERE object_id = OBJECT_ID(N'sys_barninfo') 
               AND name = 'LowTemperature')
BEGIN
    ALTER TABLE sys_barninfo ADD LowTemperature DECIMAL(5,1) NULL;
    
    IF NOT EXISTS (SELECT * FROM sys.extended_properties 
                   WHERE major_id = OBJECT_ID(N'sys_barninfo') 
                   AND minor_id = COLUMNPROPERTY(OBJECT_ID(N'sys_barninfo'), 'LowTemperature', 'ColumnId')
                   AND name = N'MS_Description')
    BEGIN
        EXEC sys.sp_addextendedproperty 
            @name = N'MS_Description', 
            @value = N'低温值,精确到小数点后一位', 
            @level0type = N'SCHEMA', @level0name = 'dbo',
            @level1type = N'TABLE',  @level1name = 'sys_barninfo',
            @level2type = N'COLUMN', @level2name = 'LowTemperature';
    END
END
相关推荐
爱吃糖的小秦同学几秒前
MySQL 8.4.4详细下载安装配置
数据库·mysql
NPE~5 分钟前
基于MySQL实现基础图数据库
数据库·sql·mysql·教程·图数据库·图结构
技术卷6 分钟前
详解力扣高频SQL50题之550. 游戏玩法分析 IV【中等】
sql·mysql·leetcode·oracle
样子201821 分钟前
Sql注入 之sqlmap使用教程
数据库·sql
GottdesKrieges1 小时前
obd运维OceanBase数据库的常见场景
运维·数据库·oceanbase
慢慢沉2 小时前
Lua(数据库访问)
开发语言·数据库·lua
技术卷5 小时前
详解力扣高频 SQL 50 题之584. 寻找用户推荐人【入门】
sql·leetcode·oracle
武子康6 小时前
Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖
java·开发语言·数据库·学习·mysql·spring·微服务
vdoi9 小时前
【Mysql】 Mysql zip解压版 Win11 安装备忘
数据库·mysql
TDengine (老段)9 小时前
TDengine 转化类函数 TO_CHAR 用户手册
大数据·数据库·物联网·时序数据库·tdengine·涛思数据