給一個表字段增加索引,需要可重複執行,於是只能用存儲過程解決了。
下面記下簡單的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),但換其他的可能就執行不成功了。