Как создать событие mysql внутри процедуры или триггера?

Недавно я искал решение для следующей ситуации:

У меня есть MySQL таблица со структурой:

CREATE TABLE IF NOT EXISTS `battles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`active` tinyint(1) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`begindate` datetime NOT NULL,
`enddate` datetime NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Каждая битва имеет начало и конец. Begindate - это дата вставки, а обычно enddate - через три дня.

Я хотел бы создать событие mysql, которое останавливает битву (устанавливает active = 0) в конце битвы. И я хотел бы, чтобы это событие было создано по триггеру вставки в таблице сражений.

Есть связанная проблема с очень немногими ответами (Вот).

Они советуют:

Вы должны быть в состоянии сделать это с помощью триггера и планировщика событий:

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

Я пытался создать такой запрос, но безуспешно.

DELIMITER |
DROP TRIGGER IF EXISTS battle_create_end|
CREATE TRIGGER battle_create_end AFTER INSERT ON battles
  FOR EACH ROW BEGIN

    CREATE EVENT IF NOT EXISTS CONCAT('battle_end_',NEW.id)
    ON SCHEDULE AT NEW.enddate
    DO
    UPDATE battles SET battles.active = 0 WHERE battles.id = NEW.id;

  END|

DELIMITER ;

Я получаю ошибку

1576 - Рекурсия утверждений DDL о СОБЫТИИ запрещена, когда присутствует тело

Я пробовал с разными разделителями в каждой структуре строк, но безуспешно.

Если кто-то может помочь, пожалуйста, сообщите.

БР, Илько

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

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