Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como criar um evento mysql dentro de um procedimento ou gatilho?


Desculpe irmão, mas pelo que tenho lido o que você está propondo não é possível. Eu não acho que você pode criar um evento com um gatilho. O que é uma chatice porque seria útil para mim também.

No entanto, seria mais fácil criar o evento quando a linha de cada batalha fosse criada. Hear é um exemplo de algum código que encontrei de um cara explicando como os eventos funcionam.
<?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));
}

Então, basicamente, crie o evento quando você adicionar uma batalha à mesa.