首页 > 数据库 >修改mysql多个表的相同字段为同一值内容

修改mysql多个表的相同字段为同一值内容

时间:2022-12-07 17:44:31浏览次数:67  
标签:name -- id 修改 字段 client done mysql DECLARE

mysql将所有数据库的表的相同字段更新为某一值

1、创建存储过程
函数名为:proc_update_client_id CREATE PROCEDURE `proc_update_client_id`( ) BEGIN -- 定于全局变量tableName,就是循环时的表名 DECLARE tableName VARCHAR (200); -- 定义全局变量sql,就是每次循环执行的sql语句 DECLARE sqls VARCHAR ( 200 ); -- 定于全局变量done,默认为false,如果循环完毕,值变为true DECLARE done INT DEFAULT FALSE; -- 定于全局变量,要更新的值 DECLARE clientId VARCHAR(200); -- 声明游标,游标对应的结果集为查询出的所有符合条件的表名, -- 下面的select语句为查询表名,其中的TABLE_SCHEMA就是数据库名 DECLARE cursor_name CURSOR FOR SELECT CONCAT(tab.TABLE_SCHEMA,'.',col.table_name) FROM information_schema.TABLES tab LEFT JOIN information_schema.COLUMNS col ON col.table_name = tab.table_name WHERE table_type = 'BASE TABLE' AND col.column_name = 'client_id'; -- 当循环结束后,就把全局变量done设置为true DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 设置更新的值 SET clientId = 'bankdev'; -- 打开游标 OPEN cursor_name; my_loop:LOOP
-- 游标当前指向的一条数据赋值给tableName FETCH cursor_name INTO tableName; -- 修改表的数据的sql SET sqls = CONCAT( ' update ', tableName, ' set client_id = "',clientId,'"'); -- 把要执行的sql语句赋值给@a变量 SET @a = sqls; -- 预处理语句 PREPARE stmt1 FROM @a; -- 执行预处理语句 EXECUTE stmt1; -- 删除预处理语句 DEALLOCATE PREPARE stmt1; -- 每次检查done变量,如果为true,就跳出循环 IF done THEN LEAVE my_loop; END IF; -- 结束循环 END LOOP; -- 关闭游标 CLOSE cursor_name; END

 2、执行存储过程 

call proc_update_client_id()

3、删除存储过程
drop procedure proc_update_client_id;

  

标签:name,--,id,修改,字段,client,done,mysql,DECLARE
From: https://www.cnblogs.com/yongquan/p/16963804.html

相关文章

  • Mysql连接查询详解
    前言记得刚工作几年的时候,就写了一篇关于Mysql连接查询的博客文章,里面简单的认为先对关联表的记录进行笛卡尔积,然后再根据where条件过滤,现在看来有点贻笑大方了。正好最近看......
  • 通过Logstash实现mysql数据定时增量同步到ES
    文章目录​​前言​​​​一、系统配置​​​​二、同步步骤整体概览​​​​三.logstash数据同步实战​​​​1、新建mysql表​​​​2、ES中新建索引​​​​3、Logstash......
  • Mybatis-Plus字段策略FieldStrategy详解
    文章目录​​前言​​​​一、官方文档​​​​二、字段策略介绍​​​​1、FieldStrategy作用​​​​2、FieldStrategy类型​​​​3、FieldStrategy配置​​​​全局策略......
  • Centos7上使用yum安装mysql8.x
    文章目录​​前言​​​​一、官方文档​​​​二、安装步骤​​​​1.安装MySQLYumRepository​​​​2.选择要安装的版本​​​​3.检查rpm的签名​​​​4.安装Mysql​......
  • MYSQL5.7实现递归查询
    根据父id查出所有子级,包括子级的子级,包括自身的idsys_tenant_company_relation为关联表,company_id为子id,parent_company_id为父idSELECTDATA.*FROM(......
  • linux 命令行脚本修改文件
    添加单行使用重定向操作符 >> 或 >  echo"helloworld">test.txt#重写echo"helloworld">>test.txt#追加或者使用teeecho"helloworld"|......
  • 修改Docker默认镜像和容器的存储位置
    一、WhyDocker默认的镜像和容器存储位置在/var/lib/docker中,如果仅仅是做测试,我们可能没有必要修改,但是当大量使用的时候,我们可能就要默认存储的位置了。二、How......
  • docker 部署 rabbitmq(持久化) 和postgresql redis mysql
    rabbitmq:dockerrun-d--hostname=rabbitmq--restart=always-eRABBITMQ_DEFAULT_USER=admin-eRABBITMQ_DEFAULT_PASS=admin--name=rabbitmq-p5672:5672-p15672......
  • mysql两阶段提交
    1.log写入机制1.1 binlog的写入机制事务执行过程中,先把日志写到binlogcache,事务提交的时候,再把binlogcache写到binlog文件中。1.2 redolog的写入机制1.2.1.存在r......
  • Mysql GTID
    GTID的全称是GlobalTransactionIdentifier,也就是全局事务ID,是一个事务在提交的时候生成的,是这个事务的唯一标识。它由两部分组成,格式是:GTID=server_uuid:gno等价于,......