Я работаю над системой «оценок» и пытаюсь убедиться, что человек не может дважды подать оценку, используя хранимую процедуру, которая проверит, оценил ли человек определенный элемент, прежде чем разрешить новыйоценка будет сохранена.Странно то, что я передаю идентификатор пользователя и идентификатор объекта, но когда моя хранимая процедура выбирает COUNT (*), я получаю неправильный номер.
Вот моя хранимая процедура:
CREATE PROCEDURE `ADD_GRADE`(IN objectID int, IN grader int)
BEGIN
DECLARE gradeCount INT;
SELECT COUNT(*)
FROM GRADES
WHERE Obj_ID = objectID AND Grader = grader
INTO gradeCount;
IF gradeCount <= 0 THEN INSERT INTO Grades (Obj_ID, Grader) VALUES (objectID, grader);
END IF;
Оператор IF работает, но по какой-то причине мой gradeCount, похоже, игнорирует идентификатор грейдера и просто проверяет на основе Obj_ID.Я добавил селекторы, чтобы убедиться, что мои параметры остаются на правильном значении, и они есть.Если я скопирую только select и сделаю это в другом месте вручную, я получу правильное число.
Хотя я новичок в MySql, я не новичок в самом SQL.Я просто схожу с ума?Или я что-то не так делаю?
Спасибо