Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer un événement mysql dans une procédure ou un déclencheur ?

Désolé frère, mais d'après ce que j'ai lu, ce que vous proposez n'est pas possible. Je ne pense pas que vous puissiez créer un événement avec un déclencheur. Ce qui est dommage car cela me serait également utile.

Il serait cependant plus facile de créer l'événement lors de la création de la ligne de chaque bataille. Hear est un exemple de code que j'ai trouvé d'un gars expliquant comment les événements fonctionnent.

<?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));
}

Donc, en gros, créez l'événement lorsque vous ajoutez une bataille à la table.