データを定期的に更新するイベントを作成する
このステップでは、テーブルを定期的に更新する MySQL イベントを作成します。まず、データベースとテーブルを作成する必要があります。その後、テーブルを毎分更新するイベントを作成します。
まず、mysql
クライアントを使用して MySQL サーバーに接続しましょう。ターミナルを開き、次のコマンドを実行します。
mysql -u root -p
パスワードの入力を求められたら、ルートパスワードを入力してください。
次に、test_db
という名前のデータベースを作成しましょう。
CREATE DATABASE IF NOT EXISTS test_db;
次に、test_db
データベースに切り替えます。
USE test_db;
次に、id
(INT 型、主キー、自動インクリメント)と value
(INT 型)の 2 つの列を持つ event_table
という名前のテーブルを作成しましょう。
CREATE TABLE IF NOT EXISTS event_table (
id INT AUTO_INCREMENT PRIMARY KEY,
value INT
);
テーブルに初期値を挿入しましょう。
INSERT INTO event_table (value) VALUES (0);
次に、イベントを作成しましょう。このイベントは、event_table
テーブルの value
列を毎分更新します。次の SQL 文を実行します。
CREATE EVENT IF NOT EXISTS update_event
ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE event_table SET value = value + 1;
この文は、update_event
という名前のイベントを作成します。ON SCHEDULE EVERY 1 MINUTE
句は、イベントが毎分実行されることを指定します。DO
句は、イベントが実行されたときに実行する SQL 文を指定します。この文では、value
列を 1 増やします。
イベントが作成されたかどうかを確認するには、次の SQL クエリを実行します。
SHOW EVENTS FROM test_db;
次のような出力が表示されるはずです。
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| Db | Name | Definer | Time zone | Type | Execute at | Interval_value | Interval_field | Starts | Ends | Status | Originator | character_set_client | collation_connection | db_collation |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
| test_db | update_event | root@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2024-10-27 14:30:00 | NULL | ENABLED | 1 | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci |
+----------+---------------+-------------+-----------+----------+---------------------+---------------------+-----------+------------+-------------------+----------------------+--------------------+--------------------+
1 row in set (0.00 sec)
これにより、イベントが作成され、有効になっていることが確認できます。
次に、MySQL クライアントを終了します。
exit
これで、イベントは毎分実行され、event_table
テーブルの value
列を更新します。次のステップでは、イベントの実行状態を確認します。