mysql 存储过程

给一个表字段增加索引,需要可重复执行,于是只能用存储过程解决了。

下面记下简单的SQL语句:

#给细目表条目的FK_ENUMTABLEID字段创建索引
DROP PROCEDURE IF EXISTS add_idx;  
DELIMITER //  
create procedure add_idx(IN p_tablename varchar(200), IN p_idxname VARCHAR(200), IN p_columns VARCHAR(200))  
begin  
DECLARE str VARCHAR(250);  
  set @str=concat(' CREATE index ',p_idxname,' on ',p_tablename,'(',p_columns,')');   
    
  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 ; 
        select '创建索引成功!';
  ELSE 
        select '该索引已存在!';
  end if;  
  
end 
//  
DELIMITER ;  
call add_idx('tbl_enumtableitem','enumtableitem_FK_ENUMTABLEID','FK_ENUMTABLEID');
注意:mysql workbench是官方推荐的数据库管理工具,在这上面能成功运行的SQL肯定兼容其他的工具!

比如 如果不加‘delimiter//’,在有的工具上运行不报错(比如navicat),但换其他的可能就执行不成功了。


发布了37 篇原创文章 · 获赞 33 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章