这些是我到目前为止已经试过,用自己的错误消息一起两件事情:如何从存储过程创建索引或在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