Я пробую хранимые процедуры в первый раз и не могу понять, что делаю неправильно.
Вот определение таблицы:
CREATE TABLE `answers` (
`anid` int(11) unsigned NOT NULL auto_increment,
`uid` int(11) NOT NULL,
`dtid` int(11) NOT NULL,
`answer` text NOT NULL,
PRIMARY KEY (`anid`),
KEY `uid` (`uid`),
KEY `dtid` (`dtid`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
anid
- это первичный ключ, uid
- это идентификатор пользователя, dtid
- это идентификатор базы данных, а answer
- предоставленный ответ.Всякий раз, когда я получаю новый ответ для данного набора данных (вопроса) и идентификатора пользователя, я хочу сначала удалить любой старый ответ на этот же вопрос этого же пользователя, а затем вставить новый.
Вот процедураобъявление:
DELIMITER //
CREATE PROCEDURE new_answer(uid INT(11),dtid INT(11),answer TEXT)
BEGIN
DELETE FROM `answers` WHERE `uid` = uid AND `dtid` = dtid;
INSERT INTO `answers` SET `uid` = uid, `dtid` = dtid, `answer` = answer;
END//
Однако всякий раз, когда я CALL
new_answer
, удаляются ВСЕ существующие строки, и этот новый ответ теперь является единственной строкой в таблице.Надеюсь, это что-то простое, спасибо за вашу помощь.