MySQL判斷索引是否存在的存儲過程


創建mysql數據庫時需要創建索引,但是mysql並不有drop index index_name if exists on table_name這樣的語法,所以寫一個存儲過程來判斷,如果存在就刪除后再創建新的索引。存儲過程如下:

--
-- procedure of delete index
--
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('tableA', 'indexA');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM