Mysql表结构同步存储过程(适用于模版表)

news/2024/9/23 23:36:11/文章来源:https://www.cnblogs.com/aeolian/p/18330009

Mysql表结构同步

流水模版表新增字段需要同步到所有区域年份的流水表

CREATE DEFINER=`root`@`%` PROCEDURE `SyncTableStructure`(IN sourceTable VARCHAR(255), IN targetTable VARCHAR(255))
BEGINDECLARE done INT DEFAULT 0;DECLARE columnName VARCHAR(255);DECLARE columnType VARCHAR(255);DECLARE isNullable VARCHAR(3);DECLARE columnDefault TEXT;DECLARE extra VARCHAR(255);-- 游标查询源表的列结构DECLARE columnCursor CURSOR FORSELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, EXTRAFROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = sourceTable;-- 当遍历完所有行时,关闭游标DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;-- 打开游标OPEN columnCursor;read_loop: LOOP-- 读取游标中的一行FETCH columnCursor INTO columnName, columnType, isNullable, columnDefault, extra;IF done THENLEAVE read_loop;END IF;-- 检查目标表中是否存在该列IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNSWHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = targetTable AND COLUMN_NAME = columnName) THEN-- 构建ALTER TABLE语句,添加新列SET @alterSQL = CONCAT('ALTER TABLE ', targetTable, ' ADD COLUMN ', columnName, ' ', columnType);-- 处理可为空字段IF isNullable = 'NO' THENSET @alterSQL = CONCAT(@alterSQL, ' NOT NULL');END IF;-- 处理默认值IF columnDefault IS NOT NULL THENSET @alterSQL = CONCAT(@alterSQL, ' DEFAULT ', QUOTE(columnDefault));END IF;-- 处理额外属性(如AUTO_INCREMENT)IF extra != '' THENSET @alterSQL = CONCAT(@alterSQL, ' ', extra);END IF;-- 执行ALTER TABLE语句PREPARE stmt FROM @alterSQL;EXECUTE stmt;DEALLOCATE PREPARE stmt;END IF;END LOOP;-- 关闭游标CLOSE columnCursor;
END

调用

CALL SyncTableStructure('A', 'B');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/773607.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568J“鸿蒙系统”正式发布,让您的产品开发更快速、更简单!

本文主要介绍瑞芯微RK3568J的OpenHarmony系统演示,开发环境如下:OpenHarmonySDK编译环境:Ubuntu18.04.4 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.97 OpenHarmonySDK:OpenHarmony-v3.2.4-Release 本文通过创龙科技TL3568-EVM工业评估板(基于RK3568J)的硬件平台进…

CMDB运维管理平台是什么?

CMDB运维管理平台(Configuration Management Database)是一种致力于帮助企业有效管理和维护IT基础设施信息的工具。 在当今数字化浪潮的推动下,企业对IT系统的需求不断增长,IT基础设施复杂多样,为了有效管理这些系统的配置信息,CMDB运维管理平台应运而生。 CMDB对IT人员…

5折钜惠!瑞芯微RK3588J国产工业评估板,限时限量!

瑞芯微RK3588国产工业评估板(核心板国产化率100%,提供国产化率认证报告)5折钜惠狂欢活动来啦!之前错过年终活动的小伙伴们赶紧看过来吧,限时10天、限量120套,手快有、手慢无!RK3588J是瑞芯微四核Cortex-A76@2.4GHz + 四核Cortex-A55@1.8GHz处理器,支持6TOPS超强算力NPU…

node-内存溢出问题

​一人行,天地为师。--佚名​​ ​ 项目需要将客户机的sn码作为请求参数之一, 但是早上开项目的时候 发现主进程与渲染进程无法交互了, 具体表现为: 主进程在窗口初始化完毕后获取了客户机的sn码,随后发送给前台,这是在主进程打印出来的然后前台并没有接收到,无论重启编…

HIVE UDF 加密加密函数

一、AES算法 AES(Advanced Encryption Standard)即高级加密标准,是一种对称加密算法,被广泛应用于数据加密和保护领域。AES算法使用的密钥长度为128位、192位或256位,比DES算法的密钥长度更长,安全性更高 二、自定义UDF加解密函数 利用AES算法自定义UDF函数,实现在Hive中…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-06 PWM呼吸灯实验

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录"米联客"FPGA社区 http://www.uisrc.com 视频课程、答疑解惑! 1概述小…

学成在线项目随笔

全局样式设定css阴影效果:使用flex布局时float:right不生效时flex布局等分方框,通过flex-grow实现,设置后通过text-align设置子元素位置

thinkphp: 安装fastadmin

一,官方地址: 1,官方站: https://www.fastadmin.net/ 2,文档地址: https://doc.fastadmin.net/docs/install.html二,安装: 1,下载: 下载地址: https://www.fastadmin.net/download.html 如图2, 解压fastadmin安装包到服务器,并解压: liuhongdi@lhdpc:/data/site/admin/fast$ …

windows编译ZLMediaKit流媒体服务webrtc

环境说明 ZLMediaKit编译需要的软件 visual studio 2022 cmake 3.29.0-rc2 OpenSSL 1.1.1w(不想踩坑的话安装这个版本) libsrtp 2.6.0 ZLMediaKit编译后运行需要 libsrtp 编译后且配置环境变量 ZLMediaKit 编译后文件cmake visual stuido 20222,自带cmake cmake可以到这两个地…

idea 删除项目

今天学习javadoc时在cmd命令提示符中总显示说“不是内部或外部命令,也不是可运行的程序或批处理文件”,因此上网查找解决办法,正所谓一顿操作猛如虎一看结果二百五。那些方法不仅没能解决问题,反而使原本好好的java class成为咖啡杯图标从而不能运行。 多次修改无果后,决定…

解决rust-analyzer加载时间过长等问题

若出现下述类似的问题,可以尝试使用本文的方法进行解决。vscode 一直卡在 fetching metadata 阶段出现报错 Blocking waiting for file lock on package cache出现报错 proc macro command not expanded: No proc-macros present for crate rust-analyzer(unresolved-proc-mac…

leetcode-8,真恶心

题目: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。 推导:代码:1 class Automaton {2 public:3 int sign = 1; // 初始化默认符号4 long long ans = 0; // 初始化整数5 unordered_map<string, vector<string>&g…