Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erstelle ich ein MySQL-Ereignis innerhalb einer Prozedur oder eines Triggers?

Tut mir leid, Bruder, aber nach dem, was ich gelesen habe, ist das, was Sie vorschlagen, nicht möglich. Ich glaube nicht, dass Sie ein Ereignis mit einem Trigger erstellen können. Was schade ist, weil es auch für mich nützlich wäre.

Es wäre jedoch einfacher, das Ereignis zu erstellen, wenn die Reihe für jeden Kampf erstellt wird. Hear ist ein Beispiel für einen Code, den ich von einem Typen gefunden habe, der erklärt, wie Events funktionieren.

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

Erstellen Sie also im Grunde das Ereignis, wenn Sie dem Tisch einen Kampf hinzufügen.