Получение двух проблем при использовании хранимой процедуры в MySQL

Ниже приведен пример кода моей хранимой процедуры, в которой я работаю для начисления процентов. Этот код не является исполняемым, поскольку в соответствии с обнаружением проблемы с его получением при определении создания временного блока таблицы перед объявлением курсора, но если я недавно определил то же самое после объявления курсора, то он выполняется успешно.

1- Мой вопрос - я использую эту таблицу внутри курсора, поэтому я должен определить после курсора, или я что-то пропустил ??

CREATE PROCEDURE `sp_interest_calculation_test`(
    IN sub_type CHAR(1)
)
BEGIN
    DECLARE s_ledger_id INT;
    DECLARE s_start, s_end, s_tran INT DEFAULT 0;

    **DROP TABLE IF EXISTS tmp_interest;
    CREATE TEMPORARY TABLE IF NOT EXISTS tmp_interest(
        id int(11) NOT NULL AUTO_INCREMENT,
        ledger_id INT UNSIGNED,
        dr_amount INT,
        cr_amount INT,
        balance INT
    );**

    DECLARE cur_saving_acc CURSOR FOR 
    SELECT SQL_CALC_FOUND_ROWS 1;

    OPEN cur_saving_acc;

    SET s_end = (SELECT FOUND_ROWS());

    WHILE s_start<s_end DO
    FETCH cur_saving_acc INTO s_ledger_id;

     INSERT INTO tmp_interest(ledger_id)
     SELECT s_ledger_id;

     SELECT * FROM tmp_interest;

     /*Interest calculation logic ends here */
     SET s_start = s_start+1;

     END WHILE;

    CLOSE cur_saving_acc;

END

2- После успешного выполнения вышеупомянутой хранимой процедуры (определение временной таблицы после объявления курсора) я получил следующую проблему при вызове SP:

CALL sp_interest_calculation_test ('A');

«Код ошибки: 1075 Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ»

Это потому, что я пропустил определение идентификатора в качестве первичного ключа, поэтому я просто изменил столбец с

id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY

Я использую хранимую процедуру в MySQL в первый раз, и мне было нелегко решить вышеуказанную проблему, поэтому не могли бы вы описать вышеупомянутые проблемы и их причины, и в любом случае есть ли здесь возможность определить столбец автоматического номера без определения его в качестве первичного ключа?

Примечание. Параметр sub_type нигде не используется, и в образце кода не выполняется больше операций с курсором, хотя я имею дело с расчетом большого интереса внутри блока.

Заранее большое спасибо и надеюсь, что все вы проявите интерес к этому вопросу. (Я не нашел ничего точного по этим вопросам). Я также ищу альтернативы, просто я должен рассчитать дебет, кредит, баланс для каждой бухгалтерской книги, я пробовал это без цикла в одном запросе, но выполнение никогда не заканчивается.

Ответы на вопрос(2)

Ваш ответ на вопрос