MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで現在時刻に即時実行されるワンタイムイベントを作成する方法

ワンタイムイベント(一回限りのイベント)とは、特定のスケジュールに基づいて一度だけ実行されるイベントのことです。MySQLでは、CREATE EVENT文とON SCHEDULE AT句を組み合わせることで、このようなイベントを簡単に作成できます。

ここでは、現在の時刻に即座に実行されるイベントを作成する例を紹介します。

手順1:イベントの実行結果を保存するテーブルを作成する

まず、イベントが実行されたことを確認するためのテーブルを用意します。

mysql> CREATE TABLE event_message(
    ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    MESSAGE VARCHAR(255) NOT NULL,
    Generated_at DATETIME NOT NULL
);
Query OK, 0 rows affected (0.61 sec)

手順2:CURRENT_TIMESTAMPで即時実行されるイベントを作成する

次に、スケジュールとしてCURRENT_TIMESTAMPを指定したイベントを作成します。これにより、イベントは作成された瞬間に一度だけ実行されます。

mysql> CREATE EVENT testing_event
    ON SCHEDULE AT CURRENT_TIMESTAMP
    DO INSERT INTO event_message(message, generated_at)
    VALUES('Hello', NOW());
Query OK, 0 rows affected (0.00 sec)

手順3:実行結果を確認する

イベントが正しく実行されたかどうか、テーブルの中身を確認してみましょう。

mysql> SELECT * FROM event_message;
+----+---------+---------------------+
| ID | MESSAGE | Generated_at        |
+----+---------+---------------------+
| 1  | Hello   | 2017-11-22 17:05:22 |
+----+---------+---------------------+
1 row in set (0.00 sec)

解説

上記の出力からわかるように、イベントtesting_eventは作成された直後に自動的に実行され、テーブルにデータが1件挿入されています。ポイントは以下の通りです。

  • ON SCHEDULE AT CURRENT_TIMESTAMP:イベントを実行するタイミングを「現在時刻」に指定します。これにより、イベント作成後すぐに一度だけ実行されます。
  • DO句:イベントが実行されるときに実際に行う処理(ここではINSERT文)を記述します。

なお、この方法はイベントの動作テストやデバッグを行いたい場合にも便利です。また、イベント機能を使用するには、MySQLサーバーでイベントスケジューラが有効になっている必要がある点に注意してください。SHOW VARIABLES LIKE 'event_scheduler';で状態を確認できます。

  1. 【MySQL入門】RIGHT JOINを使ってビュー(VIEW)を作成する方法を実例付きで解説

    MySQLでは、RIGHT JOIN(右外部結合)を使用したSELECT文からもビュー(VIEW)を作成できます。本記事では、「Customers」テーブルと「Reserve」テーブルのデータを例に、RIGHT JOINによるビュー作成の手順を具体的に解説します。 使用するサンプルデータ まず、例として使用する2つのテーブルの内容を確認しておきましょう。「Customers」には顧客情報が、「Reserve」には車の予約履歴が格納されています。 mysql> Select * from Customers; +-------------+----------+ | Customer_

  2. INNER JOINを使用してMySQLビューを作成する方法

    INNER JOINでMySQLビューを作成する手順MySQLでは、CREATE VIEW文とINNER JOINを組み合わせることで、複数のテーブルから必要なデータだけを抽出したビュー(仮想テーブル)を作成できます。ここでは、実際のサンプルデータを使って、その作成方法をわかりやすく解説します。以下の例では、「customers」テーブルと「reserve」テーブルという2つのテーブルを使用します。使用するサンプルデータまず、それぞれのテーブルの中身を確認してみましょう。mysql> Select * from customers; +-------------+----------+