飞行的蜗牛

vuePress-theme-reco 极客学长    2013 - 2025
飞行的蜗牛 飞行的蜗牛

Choose mode

  • dark
  • auto
  • light
首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
author-avatar

极客学长

154

文章

151

标签

首页
分类
  • 技术杂谈
  • Database
  • Docker
  • PHP
  • 随笔杂谈
  • 前端开发
  • FunnyTools
  • Jekyll
  • 读书笔记
  • Java
  • SpringBoot
  • 区块链技术
  • IPFS
  • C/C++
  • Filecoin
  • Golang
  • Sharding-JDBC
  • 分布式存储
  • Lotus-源码系列
  • Lotus
  • 框架源码系列
  • Spring-源码系列
  • AI
  • ChatGPT
  • Stable Diffusion
  • DeepSeek-R1
  • DeepSeek-V3
标签
时间抽
关于作者
开源项目
GeekAI (opens new window)
  • 使用存储过程删除字段和索引

    • 删除字段
      • 删除索引

      使用存储过程删除字段和索引

      vuePress-theme-reco 极客学长    2013 - 2025

      使用存储过程删除字段和索引


      极客学长 2015-11-01 0 MySQL

      今天对公司OA系统的数据表进行了一些重构,需要删除很多字段和索引,但是发现有两个问题

      1. 删除字段的语句要些很多变,好麻烦的说

      2. 当字段或者索引不存在时会报错,这样下面sql语句就会被中断执行,这个更麻烦

      所以第一时间就想到了使用mysql的存储过程就可以解决这个问题,这里记录一下sql语句,以便以后借鉴。

      # 删除字段

      DROP PROCEDURE IF EXISTS Del_Col;  
      -- 创建删除字段的存储过程
      
      create procedureDel_Col (IN p_tablename VARCHAR(200), IN p_col VARCHAR(200))
      
      BEGIN
      
        if exists (select * from information_schema.columns WHERE table_name = p_tablename AND column_name = p_col) then
      
           alter table p_tablename drop column p_col;
      
        end if;
      
      END $$
      
      
      DELIMITER ;
      
      CALL Del_Col ('user', 'country_id');
      
      

      # 删除索引

      -- 删除已经存在的存储过程 DROP PROCEDURE IF EXISTS Del_idx; DELIMITER $$ -- 创建删除索引的存储过程 create procedure Del_idx(IN p_tablename VARCHAR(200), IN p_idxname VARCHAR(200)) BEGIN

       DECLARE str VARCHAR(250);
      

      set @str=concat(' drop index ',p_idxname,' on ',p_tablename);

      select count(*) into @cnt from information_schema.statistics where table_name=p_tablename and index_name=p_idxname ;

      if @cnt > 0 then

      PREPARE stmt FROM @str;
      
      EXECUTE stmt ;
      

      end if;

      END $$

      DELIMITER ;

      -- 删除文章索引 CALL Del_idx('article', 'userid');

      本站博文如非注明转载则均属作者原创文章,引用或转载无需申请版权或者注明出处,如需联系作者请加微信: geekmaster01

      解决搜狗输入法在 linux 系统不能输入中文