mysqlイベント(event)のユニークさ
3460 ワード
一、説明:MySQL 5.1.xバージョンでは、イベント、タイミングタスクメカニズムという名前の新しい特性EVENTが導入され、指定された時間単位で特定のタスクを実行するため、今後、データのタイミング操作は外部プログラムに依存せず、データベース自体が提供する機能を直接使用する.
適用範囲:eventを使用して、テーブルの作成、データの削除など、一定の時間ごとに必要な操作を処理できます.
EVENTの用法は以下の通りである:二、使用過程
(一)現在オープンしているイベント計画(スケジューラ)を表示するには、3つの方法があります.
(二)イベント計画(スケジューラ)スイッチをオンにするには4つの方法がある.
キー値1またはONはオンを示します.0またはOFFはオフを示します.
(3)イベント計画に関する権限:eventを単独で使用してSQL文を呼び出す場合、event権限を持つユーザーを表示および作成し、SQL文を呼び出す場合、ユーザーがSQLを実行する権限を持つ必要があります.Event権限の設定はmysqlに保存されます.userテーブルとmysql.dbテーブルのEvent_privフィールドです.(FLUSH PRIVILEGES;)
eventとprocedureが連携して使用される場合、ストレージ・プロシージャの表示と作成にはcreate routine権限が必要であり、ストレージ・プロシージャの実行を呼び出すにはexcute権限が必要であり、ストレージ・プロシージャが特定のSQL文を呼び出すには、そのSQLを実行する権限が必要である.
SELECT HOST,USER,Event_priv FROM mysql.user;
(四)イベントの作成:create event文でイベントを作成します.各イベントは2つの主要な部分で構成され、第1の部分はイベントスケジューリング(event schedule)であり、イベントがいつ開始されるか、およびどの頻度で開始されるかを示し、第2の部分はイベントアクション(event action)であり、これはイベント開始時に実行されるコードであり、イベントのアクションにはSQL文が含まれており、単純なinsert文またはupdate文である可能性があります.ストレージ・プロシージャまたはbeninを...end文ブロックです.この2つの場合、複数のSQLを実行できます.1つのイベントは、イベント・スケジューラがイベント・アクションを呼び出す必要があるかどうかをチェックし、停止はイベントの宣言がディレクトリに格納されていることを意味しますが、スケジューラは呼び出すべきかどうかをチェックしません.1つのイベントが作成されると、すぐにアクティブになり、1つのイベントが1回または複数回実行されます.
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
名詞解釈:event_name:作成されたevent名(一意に確定).ON SCHEDULE:計画タスク.schedule:eventの実行時間と頻度を決定し(時間は必ず将来の時間で、過去の時間はエラーになることに注意)、ATとEVERYの2つの形式があります.[ON COMPLETION[NOT]PRESERVE]:オプション可能、デフォルトはON COMPLETION NOT PRESERVEつまり計画任務の実行が終わった後に自動的にこの事件をdropする;ON COMPLETION PRESERVEはdropを落とさない.[COMMENT'comment']:イベントを記述するためのオプション.相当コメント、最大長64バイト.[ENABLE|DISABLE]:eventの状態を設定し、デフォルトENABLE:システムがこのイベントを実行しようとしていることを示し、DISABLE:このことを閉じ、alterでDO event_を修正することができるbody:実行するsql文(複合文でもよい).CREATE EVENTは、ストレージ中に使用する場合に合法的です.
ON SCHEDULE計画タスクには、計画タスクを設定する方法が2つあります. ATタイムスタンプは、単一の計画タスクを完了するために使用されます. EVERY時間(単位)の数の時間単位[STARTSタイムスタンプ][ENDSタイムスタンプ]は、重複する計画タスクを完了するために使用されます.
2つの計画タスクでは、タイムスタンプは任意のTIMESTAMPおよびDATETIMEデータ型であってもよく、タイムスタンプは現在の時間よりも大きい必要がある.
重複する計画タスクでは、時間(単位)の数は任意の非空(Not Null)の整数式であり、時間単位はキーワード:YEAR、MONTH、DAY、HOUR、MINUTEまたはSECONDである.
ヒント:他の時間単位も合法的です.例えば、QUARTER、WEEK、YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECONDでは、これらの非標準的な時間単位は推奨されません.
DELIMITER $$
CREATE EVENT IF NOT EXISTS e_blog
ON SCHEDULE EVERY 30 SECOND
ON COMPLETION PRESERVE
DO BEGIN
CALL MoveBlogData();
END$$
DELIMITER ;
DO sql_statementフィールドは、eventが実行するSQL文またはストレージ・プロシージャを表します.ここで、SQL文は複合文とすることができ、BEGINとEND識別子を使用して複合SQL文を実行順に配置します.
(五)イベントの開閉:
イベントを開く:ALTER EVENT e_test ON COMPLETION PRESERVE ENABLE;
イベントを閉じる:ALTER EVENT e_test ON COMPLETION PRESERVE DISABLE;
適用範囲:eventを使用して、テーブルの作成、データの削除など、一定の時間ごとに必要な操作を処理できます.
EVENTの用法は以下の通りである:二、使用過程
(一)現在オープンしているイベント計画(スケジューラ)を表示するには、3つの方法があります.
SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;
(二)イベント計画(スケジューラ)スイッチをオンにするには4つの方法がある.
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
キー値1またはONはオンを示します.0またはOFFはオフを示します.
(3)イベント計画に関する権限:eventを単独で使用してSQL文を呼び出す場合、event権限を持つユーザーを表示および作成し、SQL文を呼び出す場合、ユーザーがSQLを実行する権限を持つ必要があります.Event権限の設定はmysqlに保存されます.userテーブルとmysql.dbテーブルのEvent_privフィールドです.(FLUSH PRIVILEGES;)
eventとprocedureが連携して使用される場合、ストレージ・プロシージャの表示と作成にはcreate routine権限が必要であり、ストレージ・プロシージャの実行を呼び出すにはexcute権限が必要であり、ストレージ・プロシージャが特定のSQL文を呼び出すには、そのSQLを実行する権限が必要である.
SELECT HOST,USER,Event_priv FROM mysql.user;
(四)イベントの作成:create event文でイベントを作成します.各イベントは2つの主要な部分で構成され、第1の部分はイベントスケジューリング(event schedule)であり、イベントがいつ開始されるか、およびどの頻度で開始されるかを示し、第2の部分はイベントアクション(event action)であり、これはイベント開始時に実行されるコードであり、イベントのアクションにはSQL文が含まれており、単純なinsert文またはupdate文である可能性があります.ストレージ・プロシージャまたはbeninを...end文ブロックです.この2つの場合、複数のSQLを実行できます.1つのイベントは、イベント・スケジューラがイベント・アクションを呼び出す必要があるかどうかをチェックし、停止はイベントの宣言がディレクトリに格納されていることを意味しますが、スケジューラは呼び出すべきかどうかをチェックしません.1つのイベントが作成されると、すぐにアクティブになり、1つのイベントが1回または複数回実行されます.
:
CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement
名詞解釈:event_name:作成されたevent名(一意に確定).ON SCHEDULE:計画タスク.schedule:eventの実行時間と頻度を決定し(時間は必ず将来の時間で、過去の時間はエラーになることに注意)、ATとEVERYの2つの形式があります.[ON COMPLETION[NOT]PRESERVE]:オプション可能、デフォルトはON COMPLETION NOT PRESERVEつまり計画任務の実行が終わった後に自動的にこの事件をdropする;ON COMPLETION PRESERVEはdropを落とさない.[COMMENT'comment']:イベントを記述するためのオプション.相当コメント、最大長64バイト.[ENABLE|DISABLE]:eventの状態を設定し、デフォルトENABLE:システムがこのイベントを実行しようとしていることを示し、DISABLE:このことを閉じ、alterでDO event_を修正することができるbody:実行するsql文(複合文でもよい).CREATE EVENTは、ストレージ中に使用する場合に合法的です.
ON SCHEDULE計画タスクには、計画タスクを設定する方法が2つあります.
2つの計画タスクでは、タイムスタンプは任意のTIMESTAMPおよびDATETIMEデータ型であってもよく、タイムスタンプは現在の時間よりも大きい必要がある.
重複する計画タスクでは、時間(単位)の数は任意の非空(Not Null)の整数式であり、時間単位はキーワード:YEAR、MONTH、DAY、HOUR、MINUTEまたはSECONDである.
ヒント:他の時間単位も合法的です.例えば、QUARTER、WEEK、YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECONDでは、これらの非標準的な時間単位は推奨されません.
:
DELIMITER $$
CREATE EVENT IF NOT EXISTS e_blog
ON SCHEDULE EVERY 30 SECOND
ON COMPLETION PRESERVE
DO BEGIN
CALL MoveBlogData();
END$$
DELIMITER ;
DO sql_statementフィールドは、eventが実行するSQL文またはストレージ・プロシージャを表します.ここで、SQL文は複合文とすることができ、BEGINとEND識別子を使用して複合SQL文を実行順に配置します.
(五)イベントの開閉:
イベントを開く:ALTER EVENT e_test ON COMPLETION PRESERVE ENABLE;
イベントを閉じる:ALTER EVENT e_test ON COMPLETION PRESERVE DISABLE;