Я создаю Stored Procedure
, который должен удалить Родителя и его дочерние записи, расположенные в нескольких таблицах. Однако есть только 3 типа запросов, которые необходимо выполнить, например: =
, >
и >=
.
DELIMITER $$
DROP PROCEDURE IF EXISTS `removeStory` $$
CREATE PROCEDURE `removeStory`(IN _id INTEGER, IN _cond VARCHAR(1))
BEGIN
# checking condition
IF ISNULL(_cond) AND (_cond = '=') OR (_cond = '>') OR (_cond = '>=') THEN
# removing `comment -> replies`
DELETE FROM `comment_replies`
INNER JOIN `comments` ON `comment_replies`.`comment_id` = `comments`.`id`
WHERE `comments`.`story_id` _cond _id;
# removing `comments`
DELETE FROM `comments`
WHERE `story_id` _cond _id;
...
...
# removing `story`
DELETE FROM `stories`
WHERE `id` _cond _id;
END If;
END$$
DELIMITER ;
CALL removeStory(10, '>=');
Я передаю операцию запроса в переменных _condition
, но это дает мне синтаксическую ошибку. Кроме того, есть ли способ уменьшить условия OR
.