1 はじめにこの記事では、MySQL のトリガーについてまとめます。トリガーの概念から始めて、トリガーの作成、使用、削除の方法を例とともに紹介します。 2 トリガーの紹介MySQL トリガーは、ストアド プロシージャと同様に、MySQL に埋め込まれたプログラムです。トリガーは、INSERT、UPDATE、DELETE などのアクションをトリガーするイベントです。トリガーが定義されている場合、データベースがこれらのステートメントを実行すると、トリガーがアクティブ化され、対応する操作が実行されます。トリガーは、テーブルに関連付けられたコマンド データベース オブジェクトです。テーブルで特定のイベントが発生すると、オブジェクトがアクティブ化されます。 トリガーは特別なストアド プロシージャです。違いは、ストアド プロシージャは call ステートメントを使用して呼び出す必要があるのに対し、トリガーは call ステートメントを使用して呼び出す必要がなく、手動で開始する必要もないことです。定義済みのイベントが発生する限り、トリガーは MySQL によって自動的に呼び出されます。トリガーは他のテーブルをクエリでき、複雑な SQL ステートメントを含めることができます。 3 トリガーを作成する(1)実行文を1つだけ持つトリガーを作成する 文法構造は次のとおりです。 CREATE TRIGGER トリガー名 トリガー時間 トリガーイベント ON テーブル名 FOR EACH ROW トリガーステートメント trigger_name: ユーザー定義のトリガー名。 trigger_time: トリガー イベントを識別します。before (時間が発生する前に実行) または after (イベントが発生した後に実行) として指定できます。 trigger_event: INSERT、UPDATE、DELETE などのトリガー イベントを識別します。 table_name: トリガーが作成されるテーブル。 trigger_stmt: トリガー実行ステートメント。 (2)複数の実行文を持つトリガーを作成する 文法構造は次のとおりです。 CREATE TRIGGER トリガー名 トリガー時間 トリガーイベント ON テーブル名 各行 始める ステートメント実行リスト END トリガーに少なくとも 1 つの実行ステートメントがある場合、複数の実行ステートメントを BEGIN と END で囲む必要があります。BEGIN と END は、それぞれコード ブロック全体の開始と終了を示します。 トリガー操作を説明するために、3 つのデータ テーブルを作成しましょう。 テーブル tb_student を作成します( id int 主キー auto_increment, 名前varchar(10) ); テーブル tb_before_trigger を作成します( id int 主キー auto_increment, 数値 int 、 time_now datetime NULL デフォルト CURRENT_TIMESTAMP ); テーブルtb_after_triggerを作成します( id int 主キー auto_increment, 数値 int 、 time_now datetime NULL デフォルト CURRENT_TIMESTAMP ); 例 1: before_trigger という名前のトリガーを作成します。このトリガーは、tb_student テーブルで各挿入操作が実行される前にトリガーされます。トリガーされると、tb_student テーブル内のレコードの合計数を含むレコードが before_trigger テーブルに挿入されます。 区切り文字 // 挿入前にトリガー before_trigger を作成する 各行のtb_studentについて 始める tb_before_trigger (num) に挿入し、tb_student から count(*) を選択します。 終わり // 区切り文字 ; 例 2: after_trigger という名前のトリガーを作成します。これは、tb_student テーブルで各挿入操作が実行される前にトリガーされます。トリガーされると、tb_student テーブル内のレコードの合計数を含むレコードが before_trigger テーブルに挿入されます。 区切り文字 // 挿入後にトリガー after_trigger を作成する 各行のtb_studentについて 始める tb_after_trigger (num) に挿入し、tb_student から count(*) を選択します。 終わり // 区切り文字 ; 例 1 と例 2 で作成したトリガーをテストし、tb_student テーブルにデータを挿入してみましょう (最初の 3 つのテーブルにはレコードがありません)。 tb_student (name) に値 ('zhangsan') を挿入します。 挿入後、3 つのテーブルのデータを確認します。 tb_student テーブル: tb_before_trigger テーブル: tb_after_trigger テーブル: tb_student テーブルで挿入操作が実行された後、他の 2 つのテーブルでもそれぞれレコードが更新されていることがわかります。tb_before_trigger テーブルの num 値は 0 であり、これは tb_student で挿入操作が実行される前にレコードが挿入されたことを証明しています。tb_after_trigger テーブルの num 値は 1 であり、これは tb_student で挿入操作が実行された後にレコードが挿入されたことを証明しています。これが、前後の違いです。 その他の条件付きトリガーの場合、使用方法は例 1 および例 2 と同様ですが、この記事では説明しません。 4 トリガーを表示(1)トリガーステートメントを表示する show triggers ステートメントを使用して、例 1 と例 2 で作成されたトリガーを表示できます。 トリガーを表示します。 出力: (2)トリガーテーブルでトリガーを表示する information_schema データベースの triggers テーブル内の MySQL データベースに保存されているすべてのトリガーは、次のクエリ ステートメントを通じて表示できます。 information_schema.triggers から * を選択し、trigger_name が 'before_trigger' であることを確認します。 出力: クエリ条件が指定されていない場合は、すべてのトリガー情報が表示されます。 5. トリガーを削除するトリガーを削除するには、DROP TRIGGER ステートメントを使用します。基本的な構文構造は次のとおりです。 DROP TRIGGER [スキーマ名] トリガー名 このうち、schema_name はデータベース名を示し、オプションのパラメータです。省略した場合は、現在のデータベースからトリガーを削除することを意味します。 例3: 例1で作成したトリガーbefore_triggerを削除する トリガー before_trigger を削除します。 6 結論トリガーは、場合によっては非常に効果的ですが、あまり効率的ではないので、できるだけ使用しないようにしてください。
以上がMySQLデータベースのトリガーの詳しい説明です。MySQLトリガーの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
>>: Vue で className として空の文字列を使用することはなぜ推奨されないのですか?
目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...
ホワイトリストルールの構文:基本ルール wl:ID [否定] [mz:[$URL:target_ur...
1. 透明度を変更してテキストを徐々に点滅させると、次のような効果が得られます。 <!DOCT...
Docker コンテナ内のプログラムは、ホスト ディレクトリ内のデータにアクセスして呼び出す必要があ...
複雑なテーブル構造では、一部のセルが垂直方向に複数のセルにまたがるため、列間属性 COLSPAN を...
目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...
システムド: CentOS 7のサービスsystemctlスクリプトは、/usr/lib/syste...
これを応用することで、ウェブサイトの一部の公開領域を独立したページにすることができ、その後、この技術...
この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...
参考までに、Javascriptを使用してメッセージボードの例(メッセージ削除あり)を実装します。具...
目次1. Redis Dockerベースイメージを作成する2. Redisノードイメージを作成する3...
ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...
目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...
目次js ディープコピーデータ保存方法浅いコピー/深いコピーとは何か一般的なディープコピーの実装1....
1. Java環境jdk1.8を準備するJavaがインストールされているかどうかを確認します。イン...