這些是我到目前爲止已經試過,用自己的錯誤消息一起兩件事情:如何從存儲過程創建索引或在MySQL的每個表上創建索引?
DELIMITER //
CREATE PROCEDURE createModifiedIndex(t varchar(256))
BEGIN
declare idx varchar(256);
DECLARE i int;
declare makeIndexSql varchar(256);
set idx = concat('idx_', t, '_modified_on');
set i = (select count(*) from INFORMATION_SCHEMA.STATISTICS where table_name = t and index_name = idx);
if i > 0 then
set makeIndexSql = concat('create index ', idx, ' on ', t, ' (modified_on);');
prepare stmt from makeIndexSql;
execute stmt;
end if;
END //
DELIMITER ;
call createModifiedIndex ('ACHDebitFrequencies');
call createModifiedIndex ...
第5行ERROR 1064(42000):你在你的SQL語法錯誤;查看與您的MySQL服務器版本相對應的手冊,以找到在'makeIndexSql; 執行stmt; end if; END'在第10行
這是另一個不同的嘗試,但不起作用,因爲MySQL不允許IF/THEN以外的存儲過程。
set @i = (select count(*) from INFORMATION_SCHEMA.STATISTICS where table_name = 'ACHDebitFrequencies' and index_name = 'idx_ACHDebitFrequencies_modified_on');
if @i > 0 then begin
create index 'idx_ACHDebitFrequencies_modified_on' on ACHDebitFrequencies (modified_on);
end;
end if;
...
在3線ERROR 1064(42000):你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊「如果@i> 0,則開始 創建索引‘’上ACHD」 idx_ACHDebitFrequencies_modified_on在1號線
版本的MySQL-5.1.62- r1
哇。奧術。我明天會嘗試。 – Chloe
是的,工作!謝謝!我也必須改變'如果我= 0然後'。咄。 – Chloe
@Chloe你不止歡迎:) – peterm