【问题标题】:problem in loop mysql procedure循环mysql过程中的问题
【发布时间】:2011-05-09 11:42:13
【问题描述】:

我想将我的数据复制到我在脚本下面编写的数据库中,

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'

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

【问题讨论】:

    标签: mysql stored-procedures loops


    【解决方案1】:

    第一个ifcounter == 12a == 1 一起执行。然后设置a = 2,这意味着第二个if 运行并且counter 仍然是12,因此引发了主键错误。您正在插入具有相同主键的两行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 2012-07-23
      • 2013-11-13
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多