sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear un evento mysql dentro de un procedimiento o disparador?

Lo siento hermano pero por lo que he estado leyendo no es posible lo que propones. No creo que puedas crear un evento con un disparador. Lo cual es un fastidio porque también sería útil para mí.

Sin embargo, sería más fácil crear el evento cuando se crea la fila para cada batalla. Hear es un ejemplo de un código que encontré de un tipo que explica cómo funcionan los eventos.

<?php
// establish database connection and filter incoming data
// ...
// insert blog post with pending status, get id assigned to post
$query = "INSERT INTO blog_posts (id, title, post_text, status) 
VALUES (NULL, :title, :postText, 'pending')";
$stm = $db->prepare($query);
$stm->execute(array(":title" => $title, ":postText" => $text));
$id = $db->lastInsertId();

// is this a future post?
if (isset($_POST["schedule"], $_POST["time"])) {
$scheduleDate = strtotime($_POST["time"]);

$query = "CREATE EVENT publish_:id
ON SCHEDULE AT FROM_UNIXTIME(:scheduleDate)
DO
  BEGIN
    UPDATE blog_posts SET status = 'published' WHERE id = :id;
  END";
$stm = $db->prepare($query);
$stm->execute(array(":id" => $id, ":scheduleDate" => $scheduleDate));
}
// this is not a future post, publish now
else {
$query = "UPDATE blog_posts SET status = 'published' WHERE id = :id";
$stm = $db->prepare($query);
$stm->execute(array(":id" => $id));
}

Así que básicamente crea el evento cuando agregas una batalla a la mesa.