проблема в цикле mysql процедуры - PullRequest
0 голосов
/ 09 мая 2011

Я хочу скопировать свои данные в базу данных для этого я написал ниже скрипт ,,

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 Ответ

1 голос
/ 09 мая 2011

Первый if выполняется с counter == 12 и a == 1.Затем вы устанавливаете a = 2, что приводит к тому, что второй if работает, а counter по-прежнему 12, поэтому выдается ошибка первичного ключа.Вы вставляете две строки с одинаковым первичным ключом.

Что вам нужно, если я правильно понял, это использовать структуру IF-ELSEIF, а не 4 различия IF s.

...