MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MySQL - イベントスケジューラのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MySQL - イベントスケジューラ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == MySQLのイベントスケジューラは、データベース内でスケジュール済みタスクを自動実行する機能である。<br> これは、cronのようなスケジューリング機能をMySQL内で提供するものであり、定期的なメンテナンスやデータ整理、集計処理を自動化できる。<br> <br> イベントスケジューラは、MySQL 5.1以降で利用可能である。<br> <br> イベントには、1度限り実行される <u>ATイベント</u> と、繰り返し実行される <u>EVERYイベント</u> の2種類がある。<br> * ATイベント *: 指定された日時に1度だけ実行される。 * EVERYイベント *: 指定された間隔で繰り返し実行される。 <br> イベントスケジューラは、<code>event_scheduler</code> システム変数によって制御される。<br> この変数は、ON、OFF、DISABLEDの3つの状態を持ち、ランタイムで切り替えが可能である。(DISABLEDを除く)<br> <br> イベントは、<code>CREATE EVENT</code> 文で作成し、<code>ALTER EVENT</code> 文で変更し、<code>DROP EVENT</code> 文で削除する。<br> イベントの情報は、<code>INFORMATION_SCHEMA.EVENTS</code> テーブルから確認できる。<br> <br> <u>イベントスケジューラの主な用途には、古いログの定期削除、集計テーブルの更新、テーブル最適化、バックアップ処理等がある。</u><br> <u>SQL内で完結するため、外部スクリプトが不要であり、OS非依存で移植性が高いという利点がある。</u><br> <br><br> == イベントスケジューラの有効化 == ==== event_scheduler変数 ==== イベントスケジューラの動作は、<code>event_scheduler</code> システム変数で制御される。<br> <br> この変数には、以下の3つの状態がある。<br> br> <center> {| class="wikitable" |+ イベントスケジューラの状態 |- ! 状態 !! 説明 |- | ON (または 1) || イベントスケジューラが有効であり、イベントが実行可能な状態である。<br>スケジューラスレッドが起動し、<code>SHOW PROCESSLIST</code> に表示される。 |- | OFF (または 0) || イベントスケジューラが無効であり、イベントは実行されない。<br>スレッドは停止しているが、ランタイムでONに切り替え可能である。 |- | DISABLED || イベントスケジューラが完全に無効化されている。<br>サーバ起動時のみ設定可能であり、ランタイムでは変更できない。 |} </center> <br> イベントスケジューラをランタイムで有効化する構文を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> SET GLOBAL event_scheduler = ON; </syntaxhighlight> <br> サーバ起動時にイベントスケジューラを有効化するには、<u>my.cnfファイル</u> に以下に示す設定を追加する。<br> <br> <syntaxhighlight lang="ini"> [mysqld] event_scheduler = ON </syntaxhighlight> <br> ==== 状態の確認 ==== イベントスケジューラの現在の状態を確認する方法を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> SHOW VARIABLES LIKE 'event_scheduler'; </syntaxhighlight> <br> または、グローバル変数を直接参照する。<br> <br> <syntaxhighlight lang="mysql"> SELECT @@GLOBAL.event_scheduler; </syntaxhighlight> <br> イベントスケジューラスレッドが起動しているかどうかを確認する。<br> <br> <syntaxhighlight lang="mysql"> SHOW PROCESSLIST; </syntaxhighlight> <br> <code>event_scheduler</code> が ON の場合、User が <code>event_scheduler</code>、Command が Daemon のプロセスが表示される。<br> <br><br> == イベントの作成 == ==== 基本構文 ==== イベントを作成するには、<code>CREATE EVENT</code> 文を使用する。<br> <br> <syntaxhighlight lang="mysql"> CREATE [DEFINER = <ユーザ名>] EVENT [IF NOT EXISTS] <イベント名> ON SCHEDULE <スケジュール> [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] DO <イベント本体>; </syntaxhighlight> <br> 下表に、主要な構文要素を示す。<br> <br> <center> {| class="wikitable" |+ 主要な構文要素 |- ! 構文要素 !! 説明 |- | DEFINER || イベントを実行するユーザを指定する。<br>省略時は、現在のユーザが設定される。 |- | IF NOT EXISTS || 同名のイベントが存在する場合、エラーにならず警告のみが出力される。 |- | ON SCHEDULE || イベントの実行スケジュールを指定する。 |- | ON COMPLETION || イベント実行完了後の動作を指定する。 |- | ENABLE / DISABLE || イベントの有効・無効を指定する。 |- | COMMENT || イベントのコメントを指定する。 |- | DO || 実行するSQL文 または ストアドプロシージャを指定する。 |} </center> <br> ==== スケジュール指定 ==== イベントのスケジュールは、<code>ON SCHEDULE</code> 句で指定する。<br> <br> <syntaxhighlight lang="mysql"> schedule: { AT <タイムスタンプ> [+ INTERVAL <間隔>] ... | EVERY <間隔> [STARTS <タイムスタンプ> [+ INTERVAL <間隔>] ...] [ENDS <タイムスタンプ> [+ INTERVAL <間隔>] ...] } interval: <数値> {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND} </syntaxhighlight> <br> AT構文は、1度限りのイベントを作成する。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT cleanup_event ON SCHEDULE AT '2026-03-01 03:00:00' DO DELETE FROM logs WHERE created_date < NOW() - INTERVAL 30 DAY; </syntaxhighlight> <br> 現在時刻からの相対時刻で指定することもできる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT temp_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO INSERT INTO status_log (message) VALUES ('Hourly check'); </syntaxhighlight> <br> EVERY構文は、繰り返しイベントを作成する。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT daily_cleanup ON SCHEDULE EVERY 1 DAY DO DELETE FROM logs WHERE created_date < NOW() - INTERVAL 30 DAY; </syntaxhighlight> <br> <code>STARTS</code> と <code>ENDS</code> を使用して、開始日時と終了日時を指定できる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT monthly_report ON SCHEDULE EVERY 1 MONTH STARTS '2026-01-01 00:00:00' ENDS '2026-12-31 23:59:59' DO CALL generate_monthly_report(); </syntaxhighlight> <br> 様々な間隔の指定例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> -- 毎時間実行 ON SCHEDULE EVERY 1 HOUR -- 15分ごとに実行 ON SCHEDULE EVERY 15 MINUTE -- 毎週月曜日 (1週間ごと) に実行 ON SCHEDULE EVERY 1 WEEK STARTS '2026-02-17 00:00:00' -- 3時間ごとに実行 ON SCHEDULE EVERY 3 HOUR -- 30秒ごとに実行 ON SCHEDULE EVERY 30 SECOND </syntaxhighlight> <br> ==== ON COMPLETION ==== <code>ON COMPLETION</code> 句は、イベント実行完了後の動作を制御する。<br> <br> <center> {| class="wikitable" |+ ON COMPLETIONの動作 |- ! オプション !! 説明 |- | PRESERVE || イベント実行完了後も、イベント定義を保持する。<br>1度限りイベントでも、実行後に削除されない。 |- | NOT PRESERVE || イベント実行完了後、イベント定義を自動削除する。(デフォルト)<br>1度限りイベントは、実行後に自動的に削除される。 |} </center> <br> 1度限りイベントを実行後も保持する例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT one_time_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY ON COMPLETION PRESERVE DO INSERT INTO maintenance_log (message) VALUES ('Scheduled maintenance'); </syntaxhighlight> <br> 繰り返しイベントは、<code>ENDS</code> で指定された終了日時を過ぎると完了とみなされる。<br> <code>NOT PRESERVE</code> を指定すると、終了日時後にイベント定義が削除される。<br> <br> ==== イベントの状態 ==== イベントの有効・無効状態を指定できる。<br> <br> <center> {| class="wikitable" |+ イベントの有効・無効オプション |- ! オプション !! 説明 |- | ENABLE || イベントを有効化する。(デフォルト) |- | DISABLE || イベントを無効化する。<br>イベント定義は保持されるが、実行されない。 |- | DISABLE ON SLAVE || レプリケーション環境でレプリカ側では無効化する。<br>マスタ側でのみ実行される。 |} </center> <br> 無効状態でイベントを作成する例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT maintenance_event ON SCHEDULE EVERY 1 DAY DISABLE COMMENT 'メンテナンス用イベント (手動有効化が必要)' DO CALL maintenance_procedure(); </syntaxhighlight> <br><br> == イベントの実行内容 == ==== 単一SQL文 ==== <code>DO</code> 句には、単一のSQL文を記述できる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT delete_old_logs ON SCHEDULE EVERY 1 DAY DO DELETE FROM logs WHERE date < NOW() - INTERVAL 30 DAY; </syntaxhighlight> <br> INSERT文 や UPDATE文も使用できる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT update_statistics ON SCHEDULE EVERY 1 HOUR DO UPDATE stats SET last_update = CURRENT_TIMESTAMP; </syntaxhighlight> <br> ==== 複数SQL文 ==== 複数のSQL文を実行する場合は、<code>BEGIN ... END</code> ブロックを使用する。<br> デリミタを変更して、ブロック内のセミコロンと区別する必要がある。<br> <br> <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT cleanup_and_optimize ON SCHEDULE EVERY 1 DAY STARTS '2026-01-01 03:00:00' DO BEGIN DELETE FROM logs WHERE created_date < NOW() - INTERVAL 30 DAY; OPTIMIZE TABLE logs; END | DELIMITER ; </syntaxhighlight> <br> 変数やループを使用した複雑な処理も記述できる。<br> <br> 以下の例では、10回に分けて1000行ずつ削除し、各削除の間に1秒の待機時間を設けている。<br> これにより、データベースへの負荷を分散できる。<br> <br> <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT batch_delete ON SCHEDULE EVERY 1 DAY DO BEGIN DECLARE i INT DEFAULT 0; WHILE i < 10 DO DELETE FROM logs WHERE created_date < NOW() - INTERVAL 90 DAY LIMIT 1000; SET i = i + 1; DO SLEEP(1); END WHILE; END | DELIMITER ; </syntaxhighlight> <br> ==== ストアドプロシージャの呼び出し ==== <code>DO</code> 句でストアドプロシージャを呼び出すこともできる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT daily_maintenance ON SCHEDULE EVERY 1 DAY STARTS '2026-01-01 02:00:00' DO CALL cleanup_procedure(); </syntaxhighlight> <br> パラメータを渡すこともできる。<br> <br> <syntaxhighlight lang="mysql"> CREATE EVENT monthly_archive ON SCHEDULE EVERY 1 MONTH DO CALL archive_old_data(90); </syntaxhighlight> <br><br> == イベントの変更 == 既存のイベントを変更するには、<code>ALTER EVENT</code> 文を使用する。<br> <br> <syntaxhighlight lang="mysql"> ALTER [DEFINER = <ユーザ名>] EVENT <イベント名> [ON SCHEDULE <スケジュール>] [ON COMPLETION [NOT] PRESERVE] [RENAME TO <新しいイベント名>] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'string'] [DO <イベント本体>] </syntaxhighlight> <br> * スケジュールを変更する例 *: <syntaxhighlight lang="mysql"> ALTER EVENT cleanup_event ON SCHEDULE EVERY 2 DAY; </syntaxhighlight> *: <br> * イベントを無効化する例 *: <syntaxhighlight lang="mysql"> ALTER EVENT maintenance_event DISABLE; </syntaxhighlight> *: <br> * イベントを有効化する例 *: <syntaxhighlight lang="mysql"> ALTER EVENT maintenance_event ENABLE; </syntaxhighlight> *: <br> * イベント名を変更する例 *: <syntaxhighlight lang="mysql"> ALTER EVENT old_event_name RENAME TO new_event_name; </syntaxhighlight> *: <br> * 実行内容を変更する例 *: <syntaxhighlight lang="mysql"> ALTER EVENT cleanup_event DO DELETE FROM logs WHERE created_date < NOW() - INTERVAL 60 DAY; </syntaxhighlight> *: <br> * 複数の項目を同時に変更することもできる。 *: <syntaxhighlight lang="mysql"> ALTER EVENT maintenance_event ON SCHEDULE EVERY 1 WEEK ON COMPLETION PRESERVE COMMENT '毎週実行されるメンテナンスイベント'; </syntaxhighlight> <br><br> == イベントの削除 == イベントを削除するには、<code>DROP EVENT</code> 文を使用する。<br> <br> <syntaxhighlight lang="mysql"> DROP EVENT [IF EXISTS] <イベント名>; </syntaxhighlight> <br> イベントを削除する例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> DROP EVENT cleanup_event; </syntaxhighlight> <br> <code>IF EXISTS</code> 句を使用すると、イベントが存在しない場合でもエラーにならず、警告のみが出力される。<br> <br> <syntaxhighlight lang="mysql"> DROP EVENT IF EXISTS temp_event; </syntaxhighlight> <br><br> == イベントの確認 == イベント一覧を確認するには、<code>SHOW EVENTS</code> 文を使用する。<br> <br> <syntaxhighlight lang="mysql"> SHOW EVENTS; </syntaxhighlight> <br> * 特定のデータベースのイベントを確認する。 *: <syntaxhighlight lang="mysql"> SHOW EVENTS FROM <データベース名>; </syntaxhighlight> *: <br> * パターンマッチングでイベントを検索する。 *: <syntaxhighlight lang="mysql"> SHOW EVENTS LIKE 'cleanup%'; </syntaxhighlight> *: <br> * 特定のイベントの定義を確認するには、<code>SHOW CREATE EVENT</code> 文を使用する。 *: <syntaxhighlight lang="mysql"> SHOW CREATE EVENT <イベント名>; </syntaxhighlight> *: <br> * イベントの詳細情報は、<code>INFORMATION_SCHEMA.EVENTS</code> テーブルから取得できる。 *: <syntaxhighlight lang="mysql"> SELECT EVENT_SCHEMA, EVENT_NAME, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STARTS, ENDS, STATUS, ON_COMPLETION, LAST_EXECUTED FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME = 'cleanup_event'; </syntaxhighlight> <br> <center> {| class="wikitable" |+ INFORMATION_SCHEMA.EVENTS の主要カラム ! カラム名 !! 説明 |- | <code>EVENT_SCHEMA</code> || イベントが属するデータベース名 |- | <code>EVENT_NAME</code> || イベント名 |- | <code>DEFINER</code> || イベントの定義者 |- | <code>EVENT_TYPE</code> || ONE TIME または RECURRING |- | <code>EXECUTE_AT</code> || 一度限りイベントの実行日時 |- | <code>INTERVAL_VALUE</code> || 繰り返しイベントの間隔値 |- | <code>INTERVAL_FIELD</code> || 繰り返しイベントの間隔単位 (HOUR、DAY等) |- | <code>STARTS</code> || 繰り返しイベントの開始日時 |- | <code>ENDS</code> || 繰り返しイベントの終了日時 |- | <code>STATUS</code> || ENABLED、DISABLED、SLAVESIDE_DISABLED |- | <code>ON_COMPLETION</code> || PRESERVE または NOT PRESERVE |- | <code>LAST_EXECUTED</code> || 最後に実行された日時 |} </center> <br> 全てのイベントの実行状態を確認する。<br> <br> <syntaxhighlight lang="mysql"> SELECT EVENT_NAME, STATUS, LAST_EXECUTED FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = DATABASE(); </syntaxhighlight> <br><br> == サンプルクエリ == ==== 古いデータの削除 ==== * 30日以上前のログデータを毎日削除するイベント *: <syntaxhighlight lang="mysql"> CREATE EVENT cleanup_old_logs ON SCHEDULE EVERY 1 DAY STARTS '2026-01-01 02:00:00' DO DELETE FROM logs WHERE created_date < NOW() - INTERVAL 30 DAY; </syntaxhighlight> *: <br> * 90日以上前のデータをバッチで削除し、負荷を分散する例 *: <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT batch_cleanup ON SCHEDULE EVERY 1 DAY STARTS '2026-01-01 03:00:00' DO BEGIN DECLARE i INT DEFAULT 0; WHILE i < 10 DO DELETE FROM transaction_logs WHERE created_date < NOW() - INTERVAL 90 DAY LIMIT 1000; SET i = i + 1; DO SLEEP(1); END WHILE; END | DELIMITER ; </syntaxhighlight> <br> ==== 集計テーブルの更新 ==== * 1時間ごとにセンサデータを集計して、統計テーブルに挿入する例 *: <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT update_hourly_stats ON SCHEDULE EVERY 1 HOUR DO BEGIN INSERT INTO hourly_stats (stat_time, count, avg_value, max_value) SELECT CURRENT_TIMESTAMP, COUNT(*), AVG(value), MAX(value) FROM sensor_readings WHERE timestamp > CURRENT_TIMESTAMP - INTERVAL 1 HOUR; END | DELIMITER ; </syntaxhighlight> *: <br> * 毎日の売上集計を作成する例 *: <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT daily_sales_summary ON SCHEDULE EVERY 1 DAY STARTS '2026-01-01 23:00:00' DO BEGIN INSERT INTO daily_sales (sale_date, total_amount, order_count) SELECT CURDATE(), SUM(amount), COUNT(*) FROM orders WHERE DATE(order_date) = CURDATE(); END | DELIMITER ; </syntaxhighlight> <br> ==== 定期メンテナンス ==== * 毎週テーブルを最適化し、統計情報を更新するイベントを作成する。 *: <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT weekly_maintenance ON SCHEDULE EVERY 1 WEEK STARTS '2026-01-05 03:00:00' DO BEGIN OPTIMIZE TABLE users; OPTIMIZE TABLE transactions; OPTIMIZE TABLE logs; ANALYZE TABLE users; ANALYZE TABLE transactions; ANALYZE TABLE logs; END | DELIMITER ; </syntaxhighlight> *: <br> * 毎月1日にレポートを生成するイベントを作成する。 *: <syntaxhighlight lang="mysql"> CREATE EVENT monthly_report_generation ON SCHEDULE EVERY 1 MONTH STARTS '2026-03-01 01:00:00' DO CALL generate_monthly_report(); </syntaxhighlight> <br><br> == CRONとの比較 == 下表に、イベントスケジューラとCRONの比較を示す。<br> <br> <center> {| class="wikitable" |+ イベントスケジューラ と CRONの比較 ! 項目 !! イベントスケジューラ !! cron |- | 実行環境 || MySQL内 || OS (UNIX系システム) |- | 設定場所 || データベース内 || crontabファイル |- | 実行内容 || SQL文、ストアドプロシージャ || シェルスクリプト、コマンド、プログラム |- | OS依存性 || 非依存 (移植性が高い) || 依存 (UNIX系のみ) |- | 権限管理 || DEFINER で一元管理 || ユーザ権限、ファイルシステム権限 |- | ログ確認 || INFORMATION_SCHEMA.EVENTS || syslog、cronログ |- | データベース停止時 || 実行されない || 実行可能 (データベース接続が必要) |- | 複雑な処理 || SQLの範囲内 || 任意のプログラム実行可能 |- | スケジューリング精度 || 秒単位 || 分単位 (標準) |- | エラーハンドリング || SQLエラーハンドリング || シェルスクリプトのエラー処理 |} </center> <br> <center> {| class="wikitable" |+ イベントスケジューラ と CRONのメリット |- ! 方式 !! メリット |- | rowspan="5" | イベントスケジューラ | SQL内で完結し、外部スクリプトが不要である |- | OS非依存で移植性が高い。 |- | DEFINER権限で一元管理できる。 |- | <code>INFORMATION_SCHEMA.EVENTS</code> で実行情報を確認できる。 |- | データベースと一体化しており、バックアップ時にイベント定義も含められる。 |- | rowspan="5" | cron | シェルスクリプトや外部プログラムを実行できる。 |- | POSIX標準で多くのシステムで利用可能である。 |- | データベース停止時も動作可能である。 |- | より柔軟なスケジューリングが可能である。 |- | システムレベルのタスクを実行できる。 |} </center> <br> 用途に応じて、イベントスケジューラとCRONを使い分けることが推奨される。<br> データベース内部の定期処理にはイベントスケジューラを使用し、外部プログラムの実行やシステムレベルのタスクにはCRONを使用するとよい。<br> <br><br> == イベントスケジューラの制限事項 == イベントスケジューラには、以下に示すような制限事項がある。<br> <br> <center> {| class="wikitable" |+ イベントスケジューラの制限事項 |- ! 制限事項 !! 説明 |- | <code>LOCK TABLES</code> / <code>UNLOCK TABLES</code> は使用不可 || イベント内でテーブルロックを明示的に取得・解放することはできない。 |- | <code>ALTER VIEW</code> は使用不可 || イベント内でビューの定義を変更することはできない。 |- | <code>LOAD DATA</code> / <code>LOAD XML</code> は使用不可 || イベント内で外部ファイルからデータをロードすることはできない。 |- | イベント内からのイベント操作は不可 || イベント内で <code>CREATE EVENT</code>、<code>ALTER EVENT</code>、<code>DROP EVENT</code> を実行することはできない。 |- | イベント名の大文字小文字は区別されない || event_name と EVENT_NAME は同一のイベントとして扱われる。 |- | 複数実行保護メカニズムがない || 同じイベントが前回の実行完了前に再度トリガーされる可能性がある。<br><code>GET_LOCK()</code> 関数で排他制御を実装する必要がある。 |- | 年2038以上の日付はサポートされない || 32ビット UNIXエポックの制限により、2038年1月19日以降の日付を正確に扱えない場合がある。 |} </center> <br> 複数実行を防ぐための排他制御の例を以下に示す。<br> <br> 以下の例では、<code>GET_LOCK()</code> 関数でロックを取得して、ロック取得に成功した場合のみ処理を実行する。<br> <code>GET_LOCK('my_event_lock', 0)</code> の第2パラメータ 0は、タイムアウトを0秒に設定しており、即座にロック取得の成否を返す。<br> <br> <syntaxhighlight lang="mysql"> DELIMITER | CREATE EVENT protected_event ON SCHEDULE EVERY 5 MINUTE DO BEGIN DECLARE lock_acquired INT; SET lock_acquired = GET_LOCK('my_event_lock', 0); IF lock_acquired = 1 THEN -- 実際の処理 DELETE FROM logs WHERE created_date < NOW() - INTERVAL 30 DAY; DO RELEASE_LOCK('my_event_lock'); END IF; END | DELIMITER ; </syntaxhighlight> <br><br> == 関連ページ == * [[MySQL - ストアドプロシージャ]] * [[MySQL - トリガー]] <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,MySQL,Event Scheduler,イベントスケジューラ,CREATE EVENT,ALTER EVENT,DROP EVENT,Database,データベース,SQL,スケジューリング,自動実行,定期実行,cron,メンテナンス,集計,バッチ処理,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - MySQLのイベントスケジューラの設定、使用方法、実用例に関する総合ガイド | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:MySQL]]
MySQL - イベントスケジューラ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse