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

【MySQL】指定した時間後にテーブルを自動削除する方法(EVENT活用)

MySQLで指定時間後にテーブルを自動的に削除するには?

MySQLでは、EVENT(イベント)機能を利用することで、指定した時間が経過した後にテーブルを自動的に削除できます。手動でDROP文を実行する必要がないため、一時的な作業用テーブルや期限付きデータの管理に非常に便利です。

基本構文

x時間後にテーブルを削除するイベントを作成する場合、構文は以下の通りです。

CREATE EVENT イベント名
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL x HOUR
DO
DROP TABLE IF EXISTS テーブル名;

サンプルテーブルの作成

まず、動作確認用として以下のようなテーブルを作成します。

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentFirstName varchar(20),
    StudentLastName varchar(20),
    StudentAge int
);
Query OK, 0 rows affected (0.52 sec)

2時間後にテーブルを削除するイベントの実装例

続いて、上記の構文をもとに「2時間後にテーブルを削除する」イベントを実際に作成してみましょう。

mysql> CREATE EVENT drop_table_event_after2HoursDemo
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 2 HOUR
DO
DROP TABLE IF EXISTS DemoTable;
Query OK, 0 rows affected (0.17 sec)

このイベントによって、「DemoTable」は作成から2時間後に自動的に削除されます。

補足:イベントスケジューラの有効化を確認しよう

イベントを正しく動作させるには、MySQLのイベントスケジューラが有効になっている必要があります。以下のコマンドで現在の設定を確認できます。

mysql> SHOW VARIABLES LIKE 'event_scheduler';

結果がOFFになっている場合は、次のコマンドで有効化してください。

mysql> SET GLOBAL event_scheduler = ON;

これで準備完了です。あとはイベントが指定時刻に自動実行され、テーブルが確実に削除されます。

  1. MySQLでインデックス付きのテーブルを作成する方法を徹底解説

    MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp

  2. MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法

    MySQLストアドプロシージャでSHOW CREATE TABLEを実行する方法 ストアドプロシージャの中でSHOW CREATE TABLEを実行したい場合は、動的SQL(プリペアドステートメント)を利用します。SHOW系のコマンドはプロシージャ内に直接記述できないため、SQL文を文字列として組み立てて実行するのがポイントです。 まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable2011 -> ( -> StudentId int NOT NULL AUTO_INCREMENT, -> St