循环mysql过程中的问题

时间:2011-05-09 11:42:14

标签: mysql stored-procedures loops

我想将我的数据复制到数据库中,因为我已经在下面编写了脚本,

BEGIN
DECLARE a INT Default 1;

DECLARE counter INT;

SET counter=12;

WHILE counter<1010 DO
IF a=1 THEN
    insert into problem
    values(counter,'d0008','blood pressure','ajay','25-jun-1990');

    insert into med
    values(counter,'d0008','beta blocker','ajay','25-jun-1990');

    SET a=2;
END IF;

IF a=2 THEN    
    insert into problem
    values(counter,'d0009','headache','amit','25-jan-1990');

    insert into med
    values(counter,'d0009','aspirin','amit','25-jan-1990');

    SET a=3;    
END IF;

IF a=3 THEN    
    insert into problem
    values(counter,'d0011','tension','anil','25-feb-1990');

    insert into med
    values(counter,'d0011','capsule','anil','25-feb-1990');

    SET a=4;    
END IF;

IF a=4 THEN    
    insert into problem
    values(counter,'d0012','pain','ved','25-mar-1990');

    insert into med
    values(counter,'d0012','dcold','ved','25-mar-1990');

    SET a=1;    
END IF;

SET counter=counter+1;

END WHILE;
END

注意:表的第一个字段是主键...

我无法通过循环迭代这1000次,而且我的错误

call abc();
ERROR 1062 (23000): Duplicate entry '12' for key 'PRIMARY'

我不知道这个程序有什么问题..

1 个答案:

答案 0 :(得分:1)

使用ifcounter == 12执行第一个a == 1。然后设置a = 2,其中第二个if运行且counter仍然是12,因此会引发主键错误。您正在插入具有相同主键的两行。

如果我理解正确,您需要使用IF-ELSEIF结构,而不是4个不同IF s。