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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章