Я пытаюсь написать процедуру mysql для решения проблемы с моей базой данных.
В настоящее время есть две таблицы, связанные с этой проблемой:
pre_forum_thread - это таблица, которая хранитинформация о том, сколько ответов связано с постом.
pre_forum_post - это база данных сообщений.
Я написал следующую процедуру:
delimiter //
create procedure fix_position()
begin
declare t int(10);
declare b int(10);
declare c int(10);
DECLARE thread_id CURSOR FOR select tid from pre_forum_thread;
open thread_id;
fetch thread_id into t;
SELECT count(*) into b FROM pre_forum_post WHERE tid=t;
set c= b - 1;
UPDATE pre_forum_thread SET replies= c WHERE tid=t;
UPDATE pre_forum_thread SET maxposition=b WHERE tid=t;
CLOSE thread_id;
end;//
DELIMITER ;
Но когда я вызываю эту процедуру, я получаю сообщение об ошибке:
Out of range value for column 'replies' at row 1
И я меняю процедуру на
DECLARE thread_id CURSOR FOR select tid from pre_forum_thread;
open thread_id;
fetch thread_id into t;
SELECT count(*) into b FROM pre_forum_post WHERE tid=t;
UPDATE pre_forum_thread SET maxposition=b WHERE tid=t;
CLOSE thread_id;
Я получил ошибку
ERROR 1329 (02000): No data - zero rows fetched, selected, or processed
Похоже, оба "обновления" не работают ... Кто-нибудь может помочь?